IF OBJECT_ID('Tempdb..#Temp') IS NOT NULL
Drop table #Temp
;With cte(ID,NAME,PRICE)
AS
(
SELECT 01 , 'TEST' , 5000 UNION ALL
SELECT 01 , 'TEST' , 10000 UNION ALL
SELECT 02 , 'EAST' , 4500 UNION ALL
SELECT 03 , 'AEST' , 5000 UNION ALL
SELECT 03 , 'AEST' , 5000
)
SELECT *, 'Price' + CAST(ROW_NUMBER()Over(PArtition by NAME Order by NAME) AS Varchar(5)) AS PriceCol INTO #Temp FROM cte
DECLARE @Coulmn nvarchar(max),
@Coulmn2 nvarchar(max),
@Sql nvarchar(max)
SELECT @Coulmn=STUFF((SELECT DISTINCT ', '+ '['+ PriceCol +']' From #Temp
FOR XML PATH ('')),1,1,'')
--SELECT @Coulmn
SELECT @Coulmn2=STUFF((SELECT DISTINCT ', '+ 'ISNULL(' + PriceCol + ',''0'')' +' AS ['+PriceCol +']' From #Temp
FOR XML PATH ('')),1,1,'')
--SELECT @Coulmn2
SET @Sql=' SELECT ID,NAME, '[email protected]+ ' From
(
SELECT * From #Temp
)As Src
PIVOT
(
MAX(PRICE) FOR PriceCol IN ('+ @Coulmn +')
)Pvt
Order By Pvt.ID
'
Print @Sql
Exec(@Sql)
你嘗試過這麼遠嗎? – Jens
您還可以與我們分享您到目前爲止所嘗試過的嗎? –
SQL查詢導致以前已知的列。您的結果顯示兩個價格欄。能有更多嗎?如果是這樣,多少?這是否重要,哪個價格顯示爲price1,哪個顯示爲price2?具有所有價格而不是單獨價格欄的字符串是否足夠? –