私が見た例のほとんどは複雑ですので、私は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
)。
2つの合計を追加できますか?または、これはピボット機能の範囲を超えたものですか?以下は、エラーを生成します。
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を理解するのに役立ったことを追加したいです。
この懸案事項は、データに1週間に複数の行が格納できる場合に有効です。それは起こることができますか?その場合、どんな結果が望めますか? – Lamak
@Lamak trueですが、それは彼の「通常のクエリ」にも影響するため、実際にはデータ問題です。ピボットの問題ではありません。あるいは私は誤解していますか? –
@StanShawいいえ、そうですが、私はちょうど有効な懸念を理解しようとしています – Lamak