我知道你們中許多人觀察到了這種行爲,但我想知道是否有人可以解釋原因。當我創建一個小的表創建使用旋轉功能的一個例子,我得到的結果,我期望:爲什麼使用「額外」列進行轉角不能結合結果
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
下面是結果:
但是,如果我創建一個帶有標識列的表,結果走散被分成幾行:
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