我有SQL Server 2008中的调查问卷数据,我想转置为矩阵。
我看到了几个关于同一主题的帖子,但我只是没有摆动。枢轴动态列,无聚合
给出的是下表:
Question table
Answer table
Customer table
列:
[CustomerID]
,[QuestionName_1]
,..,[QuestionName_n]
< - 动态问题列数)
的数据:
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.QuestionID
INNER JOIN Customer C ON A.CustomerID = C.CustomerID
GROUP BY Q.QuestionName
SET @columns = '[CustomerID],' + @columns
DECLARE @query VARCHAR(8000)
SET @query = 'Some PIVOT query without aggregation'
EXECUTE(@query)
初始查询想法是从取pivots with dynamic columns。
可以这样做,并且枢轴查询会是什么样子?
ps:我不想使用具有最大列数的排名。
问候,
米歇尔
在你的例子中,'choice'字段有什么数据类型?我有一个varchar字段,其中包含问题的答案。 – 2012-08-16 11:29:51
这是一个'varchar',如果你看SQL提琴它将显示表结构。 – Taryn 2012-08-16 11:31:07
我有它的工作,与MIN(QuestionName)。我并不期待那样! 感谢您的帮助蓝色:)。 – 2012-08-16 12:19:15