创建重复行时的情况
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
另请注意,文字值使用单引号,不应将其用于列别名,使用双引号作为分隔符。
我有一个 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
另请注意,文字值使用单引号,不应将其用于列别名,使用双引号作为分隔符。