创建重复行时的情况

CASE WHEN creating duplicate rows

我有一个 table 我需要从中获取数据并且需要合并添加一个 CASE WHEN 以将数据添加到列。我添加了 CASE WHEN 和 GROUP BY 但无法获得所需的输出。我看过其他类似的问题,但我看到的最少的解决方案 none 帮助解决了这个问题。

感谢任何意见。

下面是当前查询。

SELECT
AHCONO  'Company',
AHRIDN  'Order',
AHRIDL  'Order Line',
AHITNO  'Item',
CASE WHEN AHATID = 'DROP' THEN  AHATAV END AS 'DROP',
CASE WHEN AHATID = 'SEASON' THEN AHATAV END AS 'SEASON'
FROM MVXJDTA.MOATTR
WHERE AHCONO = '650'
    AND AHRIDN = '2000000059' 
    AND AHRIDL = '1'
    AND AHATID IN ('SEASON','DROP')
GROUP BY AHCONO,AHRIDN, AHRIDL, AHITNO, AHATID, AHATAV

当前输出

Company Order Order Line Item DROP SEASON
650 2000000059 1 1000019-0006 DROP01 'NULL'
650 2000000059 1 1000019-0006 'NULL' NOV 21

期望的输出

Company Order Order Line Item DROP SEASON
650 2000000059 1 1000019-0006 DROP01 NOV 21

您可以聚合 case 表达式以消除 NULL 值,尝试:

SELECT
AHCONO  "Company",
AHRIDN  "Order",
AHRIDL  "Order Line",
AHITNO  "Item",
MAX(CASE WHEN AHATID = 'DROP' THEN  AHATAV END) "DROP",
MAX(CASE WHEN AHATID = 'SEASON' THEN AHATAV END) "SEASON"
FROM MVXJDTA.MOATTR
WHERE AHCONO = '650'
    AND AHRIDN = '2000000059' 
    AND AHRIDL = '1'
    AND AHATID IN ('SEASON','DROP')
GROUP BY AHCONO, AHRIDN, AHRIDL, AHITNO

另请注意,文字值使用单引号,不应将其用于列别名,使用双引号作为分隔符。