0

我想我必须在这里使用枢轴,但不太确定。

我有下表的 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 天的所有值,这可能会影响它的设计方式。

有没有人对我如何转置这些数据有任何提示。客户数量和天数可能会有所不同,这会增加复杂性吗?

任何指针将不胜感激

谢谢

4

3 回答 3

2
SELECT * FROM 
(
SELECT customer, DAY, amt 
FROM your_table
)
pivot (SUM(amt) FOR ( DAY) IN(1, 2, 3, 4, 5));
于 2013-11-05T10:09:38.643 回答
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));
于 2013-11-05T10:15:04.583 回答
-1

MS-SQL 的 SQL Fiddle 示例

http://sqlfiddle.com/#!3/8c0a0/1

于 2013-11-05T10:41:09.573 回答