簡體   English   中英

將SQL分為多個列

[英]Pivoting SQL into multiple columns

我認為我必須在此處使用數據透視,但不太確定。

我有下表的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天中的所有值求和,這可能會影響其設計方式。

有誰對我如何轉置此數據有任何提示。 客戶數量和天數可以變化,這會增加復雜性嗎?

任何指針將不勝感激

謝謝

SELECT * FROM 
(
SELECT customer, DAY, amt 
FROM your_table
)
pivot (SUM(amt) FOR ( DAY) IN(1, 2, 3, 4, 5));

如果您只想按客戶和日期進行匯總,則按以下方式分組:

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));

MS-SQL的SQL Fiddle示例

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM