您可以通過使用一些字符串連接查詢基礎上,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服務器'你會發現很多答案! –