sql - Oracle SQL - 如何在选择中将多行合并为一个
问题描述
从以下查询:
SELECT id
, typ_produktu
, miary_wewnetrzne
, CASE
WHEN symbol LIKE '760%' THEN SUM(sal-type_number)
ELSE NULL
END sum_760
, CASE
WHEN symbol LIKE '860%' THEN SUM(sal-type_number)
ELSE NULL
END sum_860
FROM 537_MV
WHERE
rep_date = 20180930
AND id = 'DP\1601'
AND miary_wewnetrzne IN ('WN', 'wynik')
AND typ_w IN( 'RT_SZT', 'brak')
GROUP BY
id
, symbol
, typ_produktu
, miary_wewnetrzne
, typ_w
我得到这张表:
id typ_produktu miary_wewnetrzne sum760 sum860
------- ------------ ---------------- ------ ------
DP\1601 brak wynik 17 0
DP\1601 brak wynik 9 0
DP\1601 brak wynik 1 0
DP\1601 brak wynik 0 1
DP\1601 AIN WN 0 0
如果 typ_produktu = 'brak',我想在示例中将其替换为此 ID 的任何其他记录,我如何编写查询以在表中仅获取一条记录,即 'AIN '。
解决方案
您可以使用聚合:
SELECT id,
COALESCE(MAX(CASE WHEN typ_produktu <> 'BRAK' THEN typ_produktu END), MAX(typ_produktu)) as typ_produktu
MAX(miary_wewnetrzne)
SUM(CASE WHEN symbol LIKE '760%' THEN sal - type_number END) as sum_760
SUM(CASE WHEN symbol LIKE '860%' THEN sal - type_number END) as sum_860
FROM 537_MV
WHERE rep_date = 20180930 AND
id = 'DP\1601' AND
miary_wewnetrzne IN ('WN', 'wynik') AND
typ_w IN ( 'RT_SZT', 'brak')
GROUP BY id;
请注意,如果您想要每行id
,那么它应该是 中的唯一列GROUP BY
。
推荐阅读
- vue.js - vue preset.json vue 创建消息
- javascript - 如何将回调的参数分配给全局变量?
- serilog - 使用 Serilog 保存到文件或本地数据库,哪个更好或更快?
- java - 如何在 Android Studio 中显示书籍列表?
- java - “AbstractButton 类型中的方法 addActionListener(ActionListener) 不适用于参数”错误
- javascript - var debug = require('debug')('express:router:route'); TypeError: require(...) 不是函数 /
- python - Python 数据库连接:ValueError:
不是 unicode 或序列 - javascript - PHP - 从 URL 中删除参数但仍传递到另一个页面
- wia - 是否有虚拟文件>扫描 WIA 驱动程序?
- c# - 在属性名称中使用 $ 反序列化 JSON