sql - 如何将行转换为 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查询吗?
解决方案
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
推荐阅读
- css - 如何使用媒体查询控制屏幕分辨率?
- c++ - 如何让一个大的十进制数组在二进制搜索中工作
- css - 从本地推送到 Wordpress 站点后,媒体查询不起作用
- c++ - 在 C++ 中结合 OpenCVs k-means 聚类和 Vigra
- python - 抓取网页时避免重复单词_python
- javascript - 动态获取 html + css + (javascript eventlistener 不工作)
- r - 如何在R中的数据框中仅删除字符串的一部分?
- emv - 9F1D 是一个配置还是从其他配置派生的
- c# - 查找一个单词的多次出现并使用 c-sharp 打印出该单词所在的整行
- python - 使用 python/kivy 运行应用程序时仅显示“else 语句”