sql - 将查询组合成一行
问题描述
我正在运行的 SQL 查询返回重复的行,类似于以下内容:
id | value_1 | value_2 | value_3
31443 | 1 | NULL | NULL
31443 | NULL | 3 | NULL
31443 | NULL | NULL | 5
我希望我的查询输出返回的是:
id | value_1 | value_2 | value_3
31443 | 1 | 3 | 5
这就是我的查询当前的工作方式:
SELECT
id.[identifier] as 'id',
(SELECT c.[value_1] WHERE c.[value_type_id] = '3') as 'value_1',
(SELECT c.[value_2] WHERE c.[value_type_id] = '4') as 'value_2',
(SELECT c.[value_3] WHERE c.[value_type_id] = '5') as 'value_3'
FROM Client as c
INNER JOIN Identity as id ON id.[id] = c.identity
解决方案
看起来你实际上在这里是一个PIVOT
/Cross 选项卡:
SELECT
id.[identifier] AS id,
MAX(CASE c.[value_type_id] WHEN 3 THEN c.[value_1] END) AS value_1,
MAX(CASE c.[value_type_id] WHEN 4 THEN c.[value_2] END) AS value_2,
MAX(CASE c.[value_type_id] WHEN 5 THEN c.[value_3] END) AS value_3,
FROM dbo.Client AS c
INNER JOIN dbo.[Identity] AS id ON id.[id] = c.[identity] --IDENTITY is a reserved keyword, I suggest using a different name here
GROUP BY id.[identifier];
推荐阅读
- c++ - 获取 DenseBase 的非常量引用
并将其填充到函数中不起作用 - java - 从第 5 版开始,“枚举”是关键字,不能用作标识符
- javascript - 我想尝试在 div 元素中加载图像,然后如果在使用 jQuery 预设 5 秒后失败,则执行另一个功能
- r - 检查 dump.frames() 的转储时,某些函数参数在 debugger() 中不可用
- javascript - 如何在 onClick 事件使用 css flex-box 创建的水平列表中定位元素以与 ClientWidth 居中对齐?
- javascript - 单击链接时让两个 div 滚动到不同的部分 - React
- python-3.x - 如何更正请求的变量之一超出维度 0 错误的范围
- java - XML 资源的 Android Studio 路径
- java - 如何读取 txt 文件的特定行并显示到 JTable
- html - Bootstrap:将图像缩放到其他父内容,并根据内容大小在内联显示和块显示之间切换