繁星點(diǎn)點(diǎn)滴滴
2019-07-05 16:01:09
支點(diǎn)動(dòng)態(tài)列,沒有聚合我有調(diào)查問卷的數(shù)據(jù),SQLServer 2008,我想轉(zhuǎn)到一個(gè)矩陣。我看到了幾篇關(guān)于同一個(gè)話題的帖子,但我就是沒有興趣。表如下:Question tableAnswer tableCustomer table各欄:[CustomerID], [QuestionName_1], .., [QuestionName_n] <- 動(dòng)態(tài)問題欄數(shù)目)數(shù)據(jù):CustomerID, Answer_1, .., Answer_n檢索列的代碼:DECLARE @columns VARCHAR(8000)SELECT @columns = COALESCE(@columns + ',[' + cast(QuestionName as varchar) + ']',
'[' + cast(QuestionName as varchar)+ ']')FROM Answer A
INNER JOIN Question Q ON A.QuestionID = Q.QuestionIDINNER JOIN Customer C ON A.CustomerID = C.CustomerIDGROUP B
Y Q.QuestionNameSET @columns = '[CustomerID],' + @columnsDECLARE @query VARCHAR(8000)SET @query = 'Some PIVOT query without
aggregation'EXECUTE(@query)最初的查詢思想是從帶動(dòng)力柱的樞軸.可以這樣做嗎?旋轉(zhuǎn)查詢會(huì)是什么樣的呢?PS:我不想使用排名與最大的列數(shù)。問候,米歇爾
1 回答

陪伴而非守候
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
PIVOT
select *from ( select u.userid, u.fname, u.lname, u.mobile, r.question, r.choice from users u left join results r on u.questionid = r.questionid and u.choiceid = r.choiceid) xpivot( min(choice) for question in([are you], [from])) p
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.question) FROM results c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')set @query = 'SELECT userid, fname, lname, mobile, ' + @cols + ' from ( select u.userid, u.fname, u.lname, u.mobile, r.question, r.choice from users u left join results r on u.questionid = r.questionid and u.choiceid = r.choiceid ) x pivot ( min(choice) for question in (' + @cols + ') ) p 'execute(@query)
添加回答
舉報(bào)
0/150
提交
取消