2017-06-27 56 views
-1

我需要下面的选择结果被转换成单排,转换行到列在DB2

实际输出:

ORDER POSTCODE Quantity Value 
123456 AAAAA  22.78  5 
123456 AAAAA  2.93   7 

预期输出:

ORDER POSTCODE AmbientQuantity Ambientvalue FVQuantity FvVAlue 
123456 AAAAA  22.78   5   2.93  7 

如何实现预计在db2中输出?

回答

0

下面的SQL将做的工作:

with temp as (
select ORDER, POSTCODE, QUANTITY, VALUE, 
     rownumber() over (partition by ORDER, POSTCODE) as rownum 
    FROM mytable2 
) 
select ORDER, POSTCODE, 
     max(case when rownum = 1 Then QUANTITY end) as AMBIENTQUANTITY, 
     max(case when rownum = 1 Then VALUE end) as AMBIENTVALUE, 
     max(case when rownum = 2 Then QUANTITY end) as FVQuantity, 
     max(case when rownum = 2 Then VALUE end) as FVVALUE 
    from temp 
group by ORDER, POSTCODE 
+0

感谢迈克尔。上述SQL按预期工作。 –

+0

太棒了 - 请将其标记为答案 - 谢谢 – MichaelTiefenbacher

0

尝试财产以后这样的:

with tmp as (

select f0.*, rownumber() over(partition by f0.ORDER, f0.POSTCODE) rang 
from your table f0 
) 

select 
f1.ORDER, f1.POSTCODE, f1.Quantity AmbientQuantity, f1.Value Ambientvalue, 
f2.Quantity FVQuantity2, f2.Value FvVAlue2, 
f3.Quantity FVQuantity3, f2.Value FvVAlue3, 
f4.Quantity FVQuantity4, f2.Value FvVAlue4 

from tmp f1 
left outer join tmp f2 on (f1.ORDER, f1.POSTCODE)=(f2.ORDER, f2.POSTCODE) and f2.rang=2 
left outer join tmp f3 on (f1.ORDER, f1.POSTCODE)=(f3.ORDER, f3.POSTCODE) and f3.rang=3 
left outer join tmp f4 on (f1.ORDER, f1.POSTCODE)=(f4.ORDER, f4.POSTCODE) and f4.rang=4 
where f1.rang=1