您可以通过使用一些字符串连接查询基础上,Question_Master表打造出来的Select语句做动态值
DECLARE @SelectSQL VARCHAR(MAX),
@JoinSQL VARCHAR(MAX),
@OrderSQL VARCHAR(MAX)
SELECT @SelectSQL = COALESCE(@SelectSQL + ',', '')
+ QUOTENAME(question) + '.[option] as ' + QUOTENAME(question),
@JoinSQL = COALESCE(@JoinSQL + ' CROSS JOIN ', '')
+ 'Option_Master as ' + QUOTENAME(question),
@OrderSQL = COALESCE(@OrderSql + ',', '')
+ QUOTENAME(question) + '.[option]'
FROM Question_Master
ORDER BY question
DECLARE @Sql AS NVARCHAR(MAX) = N'SELECT ' + @SelectSQL + ' FROM ' + @JoinSQL + ' ORDER BY ' + @OrderSQL
EXECUTE sp_executesql @Sql;
使用QUOTENAME
将允许您有问题的值有空格或其他字符。
SQL Fiddle Example
交叉连接+旋转表!查看它! –
你已经尝试过了,但问题是,如何动态决定交叉连接的数量。基于question_master中的记录数 – gkarya42
寻找'动态数据转换表sql服务器'你会发现很多答案! –