既然你想在轉動兩列Count
和Amount
,可能更容易使用具有CASE表達式的聚合函數來獲得結果:
select name,
sum(case when days = 'Day1' then "count" else 0 end) CountDay1,
sum(case when days = 'Day1' then amount else 0 end) AmountDay1,
sum(case when days = 'Day2' then "count" else 0 end) CountDay2,
sum(case when days = 'Day2' then amount else 0 end) AmountDay2
from tableX
group by name;
見SQL Fiddle with Demo
如果你想使用的旋轉功能,那麼你將要unpivot的兩列Amount
和Count
,第一:
select name, CountDay1, AmountDay1, CountDay2, AmountDay2
from
(
select name, col||days as col, value
from tableX
unpivot
(
value
for col in ("Count", Amount)
) u
) d
pivot
(
sum(value)
for col in ('CountDay1' as CountDay1, 'AMOUNTDay1' as AmountDay1,
'CountDay2' as CountDay2, 'AMOUNTDay2' as AmountDay2)
) piv;
見SQL Fiddle with Demo
感謝bluefeet,它完美地適用於我的scneario。 – user2904845