我想我必须在这里使用枢轴,但我不太确定。
我有下表的SQL
|Customer|Day|Amt|
| 1 | 1 | x1 |
| 2 | 1 | x2 |
| 3 | 1 | x3 |
| 1 | 2 | x4 |
| 3 | 3 | x5 |
| 3 | 5 | x6 |
我想将其转动,使其看起来像
|Customer | 1 | 2 | 3 | 4 | 5 |
| 1 | x1 | x4 | | | |
| 2 | x2 | | | | |
| 3 | x3 | | x5 | | x6 |
空白单元格为空。
最后,我想总结第1,2和3天的所有值,这可能会影响它的设计方式。
有没有人知道我如何转置这些数据。客户数量和天数可能会有所不同,这会增加复杂性吗?
任何指针都将不胜感激
由于
答案 0 :(得分:2)
SELECT * FROM
(
SELECT customer, DAY, amt
FROM your_table
)
pivot (SUM(amt) FOR ( DAY) IN(1, 2, 3, 4, 5));
答案 1 :(得分:0)
如果您只想按客户和日期汇总,请按以下方式分组:
SELECT SUM(Amt) Amt, Customer, Day
FROM your_table
GROUP BY Customer, Day
如果需要将结果显示为列,则可以使用PIVOT子句(假设您具有Oracle 11g或更高版本)
SELECT * FROM
(
SELECT customer, DAY, amt
FROM your_table
)
pivot (SUM(amt) FOR (DAY) IN(1, 2, 3, 4, 5));
答案 2 :(得分:-1)
MS-SQL的SQL小提琴示例