[英]Merge columns that are empty with ones with values and merge it into one row in SQL
关于将行合并为一个有很多不同的问题,但是当我使用子 select 查询时,我在下面的示例中找不到一个问题。 我试图与 group by 聚合,但无法使其工作。
对于一个 ID,我在不同的列和行中得到三个结果。 如何通过为每个 ID 选择每列的最大值并放在一行中来组合这些结果?
我当前的代码如下
SELECT MMITNO, (SELECT COFA WHERE ALUN='PCE' and DMCF='2') as EAperCSE, (SELECT COFA WHERE ALUN='PAL' and DMCF='1') as CSEperPAL, (SELECT COFA WHERE ALUN='LAY' and DMCF='1') as CSEperLAY, CSEperPAL/CSEperLAY as LAYperPAL
FROM MVXJDTA.MITMAS LEFT JOIN MVXJDTA.MITAUN on MUITNO=MMITNO
我目前的结果
作为第一步,我想要实现的是
MMITNO EAperCSE CSEperPAL CSEperLAY
10445 18 16 4
10446 27 40
第二步是添加一个计算字段,但是当我这样做时我得到一个错误
MMITNO EAperCSE CSEperPAL CSEperLAY LAYperPAL (calculated column CSEperPal/CSEperLAY)
10445 18 16 4 4
10446 27 40
任何想法我怎么能做到这一点?
我怀疑你想要条件聚合:
select mmitno,
max(case when alun = 'pce' and dmcf = '2' then cofa end) as eapercse,
max(case when alun = 'pal' and dmcf = '1' then cofa end) as cseperpal,
max(case when alun = 'lay' and dmcf = '1' then cofa end) as cseperlay,
max(case when alun = 'pal' and dmcf = '1' then cofa end) / max(case when alun = 'lay' and dmcf = '1' then cofa end) as layperpal
from mvxjdta.mitmas mm
left join mvxjdta.mitaun ma on muitno = mmitno
group by mmitno
我强烈建议在查询中的所有列名前加上它们所属的表(别名),这样查询就不会模棱两可了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.