sql - DB2 SQL 连接和计数
问题描述
我试图将结果组合如下:
当前结果:
BOOKING_NUM | TYPE 1 | TYPE 2
Ref1 | 3 | (null)
Ref1 | (null) | 6
预期结果:
BOOKING_NUM | TYPE 1 | TYPE 2
Ref1 | 3 | 6
我对以下查询很感兴趣:
SELECT
BEC.BOOKING_NUM
,CASE WHEN BEC.TYPE = '1' THEN COUNT(BEC.TYPE) END "Type 1"
,CASE WHEN BEC.TYPE = '2' THEN COUNT(BEC.TYPE) END "Type 2"
FROM DB.EXCOM BEC
WHERE
BEC.BOOKING_NUM = 'Ref1'
GROUP BY
BEC.TYPE,
BEC.BOOKING_NUM
ORDER BY
BEC.BOOKING_NUM
我很想寻求任何建议。非常感谢。
托尼
解决方案
您需要在max()
SELECT
BEC.BOOKING_NUM
,max(CASE WHEN BEC.TYPE = '1' THEN BEC.TYPE END) "Type 1"
,max(CASE WHEN BEC.TYPE = '2' THEN BEC.TYPE END) "Type 2"
FROM DB.EXCOM BEC
WHERE
BEC.BOOKING_NUM = 'Ref1'
GROUP BY
BEC.BOOKING_NUM
ORDER BY
BEC.BOOKING_NUM
推荐阅读
- java - Springboot 映射和 DTO
- python - 在单词列表中查找复合词 - Python
- javascript - 表格标题和正文宽度未对齐
- python-3.x - 将列表重新制作成集合时如何计算所有已删除的元素(Python)
- javascript - 当我试图在一个承诺内计算一个价格时返回一个零值
- java - Java JDBC SQLite 数据库被带有 where 子句的选择锁定
- c++ - 在英特尔 Visual Studio 中使用预处理器选项编译 c++ 代码的语法
- android - 如果指定了数据类型,则隐式意图找不到活动
- html - 使父 div 宽度与子 div 宽度相同
- c# - 使用位掩码识别特定的二进制数