sql - 在没有聚合的情况下在 SQL 中透视表
问题描述
我有一个格式如下的表:
ID CODE NAME VALUE
p1 p deflect Yes
a1 d source Prim
p1 p source Dim
我想获得以下内容:
ID CODE deflect source
p1 p Yes DIM
a1 d NULL Prim
这是我当前的代码:
SELECT *
from
(
select [ID], [CODE], [NAME], [VALUE]
FROM [DATABASE].[dbo].[TABLE]
) SOURCE_TABLE
pivot
(
max(VALUE)
for [NAME] in ('deflect', 'source')
) PIVOT_TABLE;
但我得到:
Incorrect syntax near 'deflect'.
您将如何为此编写枢轴代码?
解决方案
为什么不使用条件聚合如下:
select [ID], [CODE],
max(case when [NAME] = 'deflect' then [VALUE] end) as deflect,
max(case when [NAME] = 'source' then [VALUE] end) as source_
FROM [DATABASE].[dbo].[TABLE]
group by [ID], [CODE]
推荐阅读
- java - 如何从不同的包访问 Java Swing JCheckBox 的 doClick() 方法?
- angular - 如何使用从 papaparse 中的完整功能获得的结果/数据进行 http 发布?
- json - 在Javascript中将二进制文件从Excel xlsb文件解析为JSON
- c++ - ] 之前的预期主要表达?(C++)
- c - 是否可以为进程分配持久内存?
- postman - 如何使用预请求脚本构建 Postman url 查询
- javascript - 无法在 Kendo Grid 中对过滤后的列表进行排序
- opencv - 在 Windows 上使用 conda 安装 opencv 时出现 EEXIST 17 错误
- angular - 即使内部值没有改变,组件 getter 也会触发重新渲染
- python - 如何在 Python 中不使用 urlib2.urlopen 读取 URL?