首页 > 解决方案 > 如何将行转换为 SQL 查询中具有特定内容的列?

问题描述

我有类似结构的数据库 - dbfiddle

在此处输入图像描述

结果,我想得到:

          Question1  Question2   Question3
User 1    Answer1    Answer2     Answer3
User 2    Answer1    Answer2     null
User 3    Answer1    Answer2     null
User 4    Answer1    null        null

我需要有选项来选择将要显示的问题。例如只有 1 和 3。

          Question1  Question3
User 1    Answer1    Answer3
User 2    Answer1    null
User 3    Answer1    null
User 4    Answer1    null
User 5    Answer1    Answer3

你能帮我写下这个SQL查询吗?

标签: sqlsql-server

解决方案


SQL Server 在设计上是声明性的,不支持宏替换……这就留下了动态 SQL

示例dbFiddle

Declare @SQL varchar(max)='[question 1],[question 3]'

Select @SQL ='
select * 
 From ProcedureStepsDetails
 Pivot (max(HTMLValue) for TokenValue in ('+@SQL+') ) pvt
'
Exec(@SQL)

退货

ProcedureId question 1  question 3
User 1      answer 1    answer 3
User 2      answer 1    
User 3      answer 1    
User 4      answer 1    

推荐阅读