我可以找到的關於數據透視表的所有示例都涉及聚合,並且看起來太複雜以至於無法實現我正在嘗試執行的操作,這看起來應該非常簡單:將現有表與固定數量的行,並將數據呈現在列中而不是行格式。真正簡單的PIVOT示例MS SQL 2014
下面是一些神話般的數據:
DECLARE @HSData TABLE (
School NVARCHAR(20)
, Sophomores INTEGER
, Juniors INTEGER
, Seniors INTEGER
, Total INTEGER
)
INSERT INTO @HSData VALUES
('Armstrong HS',397,337,318,0)
, ('Buchanan HS',383,325,308,0)
, ('Carlsbad HS',338,321,285,0)
UPDATE @HSData
SET Total = Sophomores + Juniors + Seniors
SELECT * FROM @HSData
結果如下:
我要的是數據,看起來像這樣:
我可以實現這個b y使用此代碼手動將數據插入到變量中:
DECLARE
@AName NVARCHAR(20)
, @BName NVARCHAR(20)
, @CName NVARCHAR(20)
, @A10 INTEGER
, @A11 INTEGER
, @A12 INTEGER
, @B10 INTEGER
, @B11 INTEGER
, @B12 INTEGER
, @C10 INTEGER
, @C11 INTEGER
, @C12 INTEGER
SET @AName = (SELECT School FROM (SELECT School, ROW_NUMBER() OVER (ORDER BY School) RN FROM @HSData) SR WHERE RN = 1)
SET @BName = (SELECT School FROM (SELECT School, ROW_NUMBER() OVER (ORDER BY School) RN FROM @HSData) SR WHERE RN = 2)
SET @CName = (SELECT School FROM (SELECT School, ROW_NUMBER() OVER (ORDER BY School) RN FROM @HSData) SR WHERE RN = 3)
SET @A10 = (SELECT Sophomores FROM @HSData WHERE School = @AName)
SET @B10 = (SELECT Sophomores FROM @HSData WHERE School = @BName)
SET @C10 = (SELECT Sophomores FROM @HSData WHERE School = @CName)
SET @A11 = (SELECT Juniors FROM @HSData WHERE School = @AName)
SET @B11 = (SELECT Juniors FROM @HSData WHERE School = @BName)
SET @C11 = (SELECT Juniors FROM @HSData WHERE School = @CName)
SET @A12 = (SELECT Seniors FROM @HSData WHERE School = @AName)
SET @B12 = (SELECT Seniors FROM @HSData WHERE School = @BName)
SET @C12 = (SELECT Seniors FROM @HSData WHERE School = @CName)
DECLARE @HSData2 TABLE (
Class NVARCHAR(20)
, "Armstrong HS" INTEGER
, "Buchanan HS" INTEGER
, "Carlsbad HS" INTEGER
)
INSERT INTO @HSData2 VALUES
('Sophomores',@A10,@B10,@C10)
, ('Juniors', @A11,@B11,@C11)
, ('Seniors', @A12,@B12,@C12)
, ('Total', @[email protected][email protected],@[email protected][email protected],@[email protected][email protected])
SELECT * FROM @HSData2
但似乎應該有更好的方法。
理想情況下,我可以將這一切歸入SSRS報告中,然後不用擔心。但它仍然讓我感到有點奇怪,我找不到任何簡單的代碼。
哇,只是哇。謝謝。太精彩了。 – DaveX