我正在使用 SQL,需要将每年可用的数据转换为季度数据,但有一些特定的规则。例如,在源数据中我有一条 2020 年的记录,我需要将其转换为 2022Q3、2022Q4、2023Q1、2023Q2 的 4 条记录。我已经附上了我正在寻找之前和之后的照片。
实际数据
| year | FIPS | PercentagePopulation | NumberOfPeople |
|------|-------|----------------------|----------------|
| 2019 | 45001 | 11.40% | 90000 |
| 2020 | 45001 | 12.10% | 100000 |
预期结果
| YearQtr | FIPS | PercentagePopulation | NumberOfPeople |
|---------|-------|----------------------|----------------|
| 2021Q4 | 45001 | 11.40% | 90000 |
| 2021Q3 | 45001 | 11.40% | 90000 |
| 2021Q2 | 45001 | 11.40% | 90000 |
| 2021Q1 | 45001 | 11.40% | 90000 |
| 2022Q4 | 45001 | 12.10% | 100000 |
| 2022Q3 | 45001 | 12.10% | 100000 |
| 2022Q2 | 45001 | 12.10% | 100000 |
| 2022Q1 | 45001 | 12.10% | 100000 |
使用它,您可以添加任意数量的年份并连接年份和季度
CREATE TABLE population (
year INT,
FIPS INT,
PercentagePopulation VARCHAR(10),
NumberOfPeople INT
);
INSERT INTO population (year, FIPS, PercentagePopulation, NumberOfPeople)
VALUES (2019, 45001, '11.40%', 90000),
(2020, 4501, '12.10%', 100000);
SELECT p.year, q.quarter, p.FIPS, p.NumberOfPeople NumberOfPeople, p.PercentagePopulation
,str(p.year+1)+'Q'+trim(str(q.quarter)) as inventedPeriod
FROM population p
CROSS JOIN (SELECT 1 AS quarter UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) q
ORDER BY year, quarter;
年 | 四分之一 | FIPS | 人数 | 人口百分比 | 发明时期 |
---|---|---|---|---|---|
2019 | 1 | 45001 | 90000 | 11.40% | 2020Q1 |
2019 | 2 | 45001 | 90000 | 11.40% | 2020Q2 |
2019 | 3 | 45001 | 90000 | 11.40% | 2020Q3 |
2019 | 4 | 45001 | 90000 | 11.40% | 2020Q4 |
2020 | 1 | 4501 | 100000 | 12.10% | 2021Q1 |
2020 | 2 | 4501 | 100000 | 12.10% | 2021Q2 |
2020 | 3 | 4501 | 100000 | 12.10% | 2021Q3 |
2020 | 4 | 4501 | 100000 | 12.10% | 2021Q4 |
你能发布一个你必须使用的源数据的例子吗?您描述只有年度总数,没有按日期细分的数据。如果源数据不能归于时间点,那么可能无法准确地按季度分解原始值。