我有一台运行V5R4的iSeries服务器。我需要将一行压平成列。以下是数据的示例:
Sequence Ordn Ordl Percentage
1 0140766 1 0
2 0140766 1 30
3 0140766 1 7
4 0140766 1 3
1 0140766 2 0
2 0140766 2 30
3 0140766 2 2
顺序是应该计算百分比的顺序
Ordn是客户的订单号
Ordl是订单行号
百分比是列表价格的百分比列表
对于任何给定的订单行,行数(或百分比)可以从1到5不等。
该文件需要按订单编号分组,并先按订单行编号排序,然后按顺序排序。
我需要展平此文件,以便按以下方式显示:
Ordn Ordl Perc1 Perc2 Perc3 Perc4 Perc5
0140766 1 0 30 7 3 Null
0140766 2 0 30 2 Null Null
有人可以帮忙吗?我尝试过几样东西,但没有任何方法可以按我想要的方式运行,而且我的SQL体验非常有限。
答案 0 :(得分:1)
这是一种手动将数据转换为五个序列列的方法。它假设只有五种可能的序列。此外,如果您有多个具有给定序列的行,则百分比将一起添加。
select
ordn
, ordl
, sum(case when sequence=1 then percentage else null end) as perc1
, sum(case when sequence=2 then percentage else null end) as perc2
, sum(case when sequence=3 then percentage else null end) as perc3
, sum(case when sequence=4 then percentage else null end) as perc4
, sum(case when sequence=5 then percentage else null end) as perc5
from yourtable
group by ordn, ordl
order by ordn, ordl
(请注意,else null
子句在此处并非绝对必要,因为null
是缺少case
案例的else
表达式的默认值。)