0
爲以下:
信用與6.空白點限定可以爲空。我想創建名爲Credit1,Credit2,..,Credit6的新列。我可以在這種情況下使用PIVOT
嗎?或者任何其他簡單的方法來轉置表?
爲以下:
信用與6.空白點限定可以爲空。我想創建名爲Credit1,Credit2,..,Credit6的新列。我可以在這種情況下使用PIVOT
嗎?或者任何其他簡單的方法來轉置表?
你可以使用動態SQL版本:
CREATE TABLE #SampleData
(
Name varchar(50),
Credits int
)
INSERT INTO #SampleData
VALUES ('John', 10),('John', 20),
('Bath', 90), ('Bath', 60), ('Bath', 70),('Bath', 80),('Bath', 50),
('Richard', 75)
DECLARE @ColPivot nvarchar(max)
;WITH temp AS
(
SELECT * , 'Credit' + CAST(row_number() OVER(PARTITION BY sd.Name ORDER BY (SELECT 1)) AS varchar(5)) AS CreditGroup
FROM #SampleData sd
)
SELECT @ColPivot = STUFF(
(SELECT DISTINCT ',' + t.CreditGroup FROM temp t FOR XML PATH (''))
,1,1,'')
DECLARE @query nvarchar(max) =
N';WITH temp AS
(
SELECT * , ''Credit'' + CAST(row_number() OVER(PARTITION BY sd.Name ORDER BY (SELECT 1)) AS varchar(5)) AS CreditGroup
FROM #SampleData sd
)
Select [Name], ' + @ColPivot +
' FROM
(
SELECT [Name], Credits, CreditGroup FROM temp
) src
PIVOT
(
MAX(Credits) FOR CreditGroup IN ('+ @ColPivot+ ')
)pvt
'
PRINT @query
EXEC (@query)
DROP TABLE #SampleData
演示鏈接:Rextester
我懶得寫動態版+1 –
謝謝你的回答 –
標籤您正在使用的數據庫管理系統。 (答案可能是產品特定的。)並注意,這裏的大多數人都想要格式化文本而不是圖像。 – jarlh
DB是SQL Server。對不起,我使用的格式 –
它總是6學分? –