sql - 将多行的 db2 结果分组以给出不同结果的列
问题描述
我有一个在 DB2 中正确执行的相当简单的查询,但是我在弄清楚如何对结果进行分组以给我 2 列的值来替换 2 个不同行的列时遇到了麻烦。换句话说,对于每个产品,我得到 2 行(一个是有效价格,一个是临时价格),但我想这样做,以便我得到一个不同的产品行,其中每个价格类型和价格都有一列
查询:
select distinct grouping, body, fabric,color,thread,detail, category,p.priceType,p.price
from ordering offs
inner join pricing p
on offs.body = p.bodyp
where priceType in ('Active','Temporary')
and offs.category in ('A','B','C');
我得到了什么:
grouping | body | fabric | color | thread | detail | category | p.priceType | price
-----------------------------------------------------------------------------------------------------
ABC 123 1234 Blue 1.1 1 TEXTILE Active 594.00
ABC 123 1234 Blue 1.1 1 TEXTILE Temporary 560.00
ABC 123 1234 Red 0.5 0 TEXTILE Active 584.00
ABC 123 1234 Red 0.5 0 TEXTILE Temporary 550.00
ABC 123 1234 Grn 3.3 12 TEXTILE Active 594.00
ABC 123 1234 Grn 3.3 12 TEXTILE Temporary 560.00
我想得到什么:
grouping | body | fabric | color | thread | detail | category | ActivePrice | TemporaryPrice
------------------------------------------------------------------------------------------------------------
ABC 123 1234 Blue 1.1 1 TEXTILE 594.00 560.00
ABC 123 1234 Red 0.5 0 TEXTILE 584.00 550.00
ABC 123 1234 Grn 3.3 12 TEXTILE 594.00 560.00
解决方案
一个简单的方法使用条件聚合:
select grouping, body, fabric, color, thread, detail, category,
max(case when p.priceType = 'Active' then p.price end) as active_price,
max(case when p.priceType = 'Temporary' then p.price end) as temporary_price
from ordering offs inner join
pricing p
on offs.body = p.bodyp
where priceType in ('Active', 'Temporary') and
offs.category in ('A', 'B', 'C')
group by grouping, body, fabric, color, thread, detail, category;
推荐阅读
- excel - 根据上面的非空白单元格填充空白单元格
- python-3.x - 如何使用 selenium python 自动分页?(无需手动选择下一步按钮)
- google-apps-script - 如果未填充单元格,则停止激活脚本
- json - 如何从此 json 字段中获取数据?
- android - 从片段上下文中获取 NavController 以使用回调侦听器启动 SimpleDialog
- plotly - 使用 plotly express 热图更改颜色条的位置
- javascript - (简单修复)如何通过 content.js Google Chrome 扩展插入 div?
- typescript - Azure Pipeline webpack typescript 别名在使用 Craco 时不起作用
- javascript - 在这个 js 代码片段中使用 break 语句是一种好习惯吗?
- php - 大型 pdf 上的 PHP readfile() 使 Google Cloud 服务器崩溃