試試這個
;With cte(ID,qnumber,avalue )
AS
(
SELECT 1,1,4 UNION ALL
SELECT 1,4,5 UNION ALL
SELECT 1,7,6 UNION ALL
SELECT 2,2,5 UNION ALL
SELECT 2,5,6 UNION ALL
SELECT 2,8,7 UNION ALL
SELECT 3,3,7 UNION ALL
SELECT 3,6,8 UNION ALL
SELECT 3,9,9
)
SELECT Cstring AS CombinedValue
,SUBSTRING(Cstring, 0, CHARINDEX(',', Cstring)) AS ID
,SUBSTRING(Cstring, CHARINDEX(',', Cstring) + 1, CHARINDEX(',', Cstring) - 1) AS Q1
,SUBSTRING(Cstring, CHARINDEX(',', Cstring) + 5, CHARINDEX(',', Cstring) - 1) AS Q2
,SUBSTRING(Cstring, CHARINDEX(',', Cstring) + 9, CHARINDEX(',', Cstring) - 1) AS Q2
FROM (
SELECT DISTINCT STUFF((
SELECT ',' + CAST(qnumber AS VARCHAR) + ',' + CAST(avalue AS VARCHAR)
FROM cte i
WHERE i.ID = o.ID
FOR XML PATH('')
), 1, 1, '') AS Cstring
FROM cte o
) DT
結果
CombinedValue ID Q1 Q2 Q2
------------------------------
1,4,4,5,7,6 1 4 5 6
2,5,5,6,8,7 2 5 6 7
3,7,6,8,9,9 3 7 8 9
這裏是一個偉大的地方開始。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
什麼是您的轉換邏輯?如何將q值和q值轉換爲q1,q2,q3? –