我見過的大多數例子都比較複雜,所以我想我發佈了一些簡單的東西來完全理解pivot
的概念。瞭解PIVOT?
declare @yt TABLE
(
Id int,
Dept varchar(10),
[Day] int,
[Counter] int
);
INSERT INTO @yt
(
ID, Dept, [Day], [Counter]
)
VALUES
(102, 'DeptA', 20170704, 96),
(102, 'DeptP', 20170704, 223),
(103, 'DeptA', 20170704, 84),
(103, 'DeptW', 20170704, 43);
select *
from
(
select id, dept, [day], [Counter]
from @yt
) src
pivot
(
sum([Counter])
for Dept in ([DeptA], [DeptP], [DeptW])
) piv;
從我的理解,內Pivot
的代碼執行以下操作:1)聚集sum([counter])
選擇的列(),樞轉在for Dept
列,然後再執行未指定的列的其餘的group by
( ID
和Day
)。
我可以添加兩個和?或者這是否超出了樞軸功能的範圍?以下產生一個錯誤:
declare @yt TABLE
(
Id int,
Dept varchar(10),
[Day] int,
[Counter] int,
Sales int
);
INSERT INTO @yt
(
ID, Dept, [Day], [Counter], Sales
)
VALUES
(102, 'DeptA', 20170704, 96, 12),
(102, 'DeptP', 20170704, 223, 5),
(103, 'DeptA', 20170704, 84, 9),
(103, 'DeptW', 20170704, 43, 11);
select *
from
(
select id, dept, [day], [Counter], sales
from @yt
) src
pivot
(
sum([Counter]), ([sales])
for Dept in ([DeptA], [DeptP], [DeptW])
) piv;
想補充一點,這個問題有助於理解pivot tables。
如果您的數據每週有多個行,則此問題有效。這種情況會發生嗎?在這種情況下你會想要什麼結果? – Lamak
@Lamak是真的,但這也會影響他的「常規查詢」,所以真的是數據問題 - 而不是一個關鍵問題。或者我誤解了? –
@StanShaw不,沒錯,但我只是想了解一個有效的關注 – Lamak