SELECT 行,如果某个字段不为空。否则,select 行改为空字段

SELECT row if certain field is NOT null. Else, select row with null field instead

我很难解决我的 sql 问题。如果某个字段(LOOKUP)不为空,则想 select 一行。否则,获取带有空字段的行。请参阅下面的 table: (PAYCODE 必须是唯一的)

PAYCODE LOOKUP ACCOUNT
201 null 720001
201 659057 999999
202 null 720002

输出必须是:

PAYCODE LOOKUP ACCOUNT
201 659057 999999
202 null 720002

这看起来很简单,但我是 sql 的新手,我花了 2 天时间解决这个问题,同时寻找解决方案,但运气不好。

您可以尝试以下逻辑:

SELECT *
FROM yourTable t1
WHERE LOOKUP IS NOT NULL OR
      NOT EXISTS (SELECT 1 FROM yourTable t2
                  WHERE t2.PAYCODE = t1.PAYCODE AND
                        t2.LOOKUP IS NOT NULL);

Demo

此逻辑保留 LOOKUP 不为空的任何记录或不存在具有相同 PAYCODE.

的非空记录的任何记录