要在固定数量的列上旋转结果集,可以使用
row_number()和条件聚合:
select job_number, total_amount, max(case when rn = 1 then charge_pre end) charge_pre1, max(case when rn = 1 then charge_amount end) charge_amount1, max(case when rn = 2 then charge_pre end) charge_pre2, max(case when rn = 2 then charge_amount end) charge_amount2, max(case when rn = 3 then charge_pre end) charge_pre3, max(case when rn = 3 then charge_amount end) charge_amount3 from ( select j.job_number, j.total_amount, c.charge_pre, c.charge_amount, row_number() over(partition by job_number, total_amount order by c.charge_pre) rn from DB.Jobs j inner join DB.Job_Charges c on j.job_number = c.job_number) tgroup by job_number, total_amount
上面的查询最多可提供3个费用代码和金额等于工作编号(按工作代码排序)。您可以
select使用更多
max(case...)表达式来扩展子句,以处理更多表达式。



