我正在使用 Hana data studio (SQL),需要编写一个游标,该游标采用原始数据集,将列年龄设置为 0,并将会计季度设置为输入数据集中不同会计季度列表的迭代值(FY24Q1、FY24Q2、FY24Q3)并将其与每个不同财政季度的原始数据集合并。
输入样本数据集:
姓名 | 年龄 | 财政季度 |
---|---|---|
詹姆斯 | 22 | FY24Q1 |
亨利 | 32 | FY24Q2 |
伊森 | 45 | FY24Q1 |
杰克 | 19 | FY24Q3 |
输出:
姓名 | 年龄 | 财政季度 |
---|---|---|
詹姆斯 | 22 | FY24Q1 |
亨利 | 32 | FY24Q2 |
伊森 | 45 | FY24Q1 |
杰克 | 19 | FY24Q3 |
詹姆斯 | 0 | FY24Q1 |
亨利 | 0 | FY24Q1 |
伊森 | 0 | FY24Q1 |
杰克 | 0 | FY24Q1 |
詹姆斯 | 0 | FY24Q2 |
亨利 | 0 | FY24Q2 |
伊森 | 0 | FY24Q2 |
杰克 | 0 | FY24Q2 |
詹姆斯 | 0 | FY24Q3 |
亨利 | 0 | FY24Q3 |
伊森 | 0 | FY24Q3 |
杰克 | 0 | FY24Q3 |
这是一个真正奇怪的要求,但这里绝对不需要任何循环。有多种方法可以解决此问题,这是其中之一。
首先我需要创建一个要使用的表。这可能是您现有的桌子。
create table #Something
(
Name varchar(10)
, Age int
, Fiscal_Quarter varchar(10)
)
insert #Something
values
('James', 22, 'FY24Q1')
, ('Henry', 32, 'FY24Q2')
, ('Ethan', 45, 'FY24Q1')
, ('Jake', 19, 'FY24Q3');
现在有一个表可以使用,我们只需查询即可获取现有数据,然后交叉连接姓名和季度。
这样的东西应该有效。它会根据您的样本数据生成您问题中所需的输出。
select Name
, Age
, Fiscal_Quarter
from #Something
union all
select Name
, 0
, Fiscal_Quarter
from
(
select distinct Name from #Something
) n
cross join
(
select distinct Fiscal_Quarter from #Something
) q