測試數據
DECLARE @TABLE TABLE([Date] DATE,Value INT)
INSERT INTO @TABLE VALUES
('2014-01-01',20) ,('2014-01-02',18),
('2014-01-03',06) ,('2014-02-01',22),
('2014-02-02',162) ,('2014-02-03',16)
查詢
SELECT * FROM (
SELECT DAY([Date]) AS [Date]
,LEFT(DATENAME(MONTH,[Date]), 3)
+ ' ' + CAST(YEAR([Date]) AS NVARCHAR(4)) Mon_YYYY
, Value
FROM @TABLE) t
PIVOT (SUM(Value)
FOR Mon_YYYY
IN ([Jan 2014],[Feb 2014])
)P
結果集
╔══════╦══════════╦══════════╗
║ Date ║ Jan 2014 ║ Feb 2014 ║
╠══════╬══════════╬══════════╣
║ 1 ║ 20 ║ 22 ║
║ 2 ║ 18 ║ 162 ║
║ 3 ║ 6 ║ 16 ║
╚══════╩══════════╩══════════╝
您將需要使用Dynamic sql來反轉實際數據,因爲列中可能存在許多值,並且此解決方案對於現實生活中的問題並不實際,但至少可以讓您瞭解如何去解決這個問題。請參閱此How to pivot unknown number of columns & no aggregate in SQL Server?
以瞭解如何動態旋轉行。
什麼具有u試過嗎? –
它被稱爲交叉標籤或數據透視查詢 –
哪些混淆upvoted一個問題,顯示沒有嘗試? –