多くの人がこの現象を観察していることは知っていますが、誰かがなぜその理由を説明できるのか不思議です。私はピボット機能の使用例を作成するために小さなテーブルを作成するときに、私は私が期待する結果を得る:ここで「余分な」列でピボットが結果を結合しない理由
CREATE TABLE dbo.AverageFishLength
(
Fishtype VARCHAR(50) ,
AvgLength DECIMAL(8, 2) ,
FishAge_Years INT
)
INSERT INTO dbo.AverageFishLength
(Fishtype, AvgLength, FishAge_Years)
VALUES ('Muskie', 32.75, 3),
('Muskie', 37.5, 4),
('Muskie', 39.75, 5),
('Walleye', 16.5, 3),
('Walleye', 18.25, 4),
('Walleye', 20.0, 5),
('Northern Pike', 20.75, 3),
('Northern Pike', 23.25, 4),
('Northern Pike', 26.0, 5);
はピボットクエリです:
SELECT Fishtype ,
[3] AS [3 Years Old] ,
[4] AS [4 Years Old] ,
[5] AS [5 Years Old]
FROM dbo.AverageFishLength PIVOT(SUM(AvgLength)
FOR FishAge_Years IN ([3], [4], [5])) AS PivotTbl
ここでの結果は以下のとおりです。私はID列を持つテーブルを作成する場合
しかし、結果は別々の行に分かれます:
DROP TABLE dbo.AverageFishLength
CREATE TABLE dbo.AverageFishLength
(
ID INT IDENTITY(1,1) ,
Fishtype VARCHAR(50) ,
AvgLength DECIMAL(8, 2) ,
FishAge_Years INT
)
INSERT INTO dbo.AverageFishLength
(Fishtype, AvgLength, FishAge_Years)
VALUES ('Muskie', 32.75, 3),
('Muskie', 37.5, 4),
('Muskie', 39.75, 5),
('Walleye', 16.5, 3),
('Walleye', 18.25, 4),
('Walleye', 20.0, 5),
('Northern Pike', 20.75, 3),
('Northern Pike', 23.25, 4),
('Northern Pike', 26.0, 5);
まったく同じクエリ:
SELECT Fishtype ,
[3] AS [3 Years Old] ,
[4] AS [4 Years Old] ,
[5] AS [5 Years Old]
FROM dbo.AverageFishLength PIVOT(SUM(AvgLength)
FOR FishAge_Years IN ([3], [4], [5])) AS PivotTbl
異なる結果:
ID列が表示されないにもかかわらず、クエリで使用されているように私には見えますクエリ内には全くありません。暗黙的にクエリに含まれているようですが、結果セットには表示されません。
これはなぜ発生するのですか?
サブクエリやrow_numberを使って周りを回る方法を知っていると付け加えるべきです...なぜそれが起こっているのか本当に興味があります。 –
この質問は空腹になった – billinkc