DB2过滤条件sql

问题描述 投票:0回答:1
身份证号码 缩写
1 A
1 B
2 B
2 B

当我过滤ID = 1时, 然后我希望结果中只有第一行作为结果,A 在相同的 id 上具有优先权。 当我过滤 ID = 2 时, 那么我想要第 3 行和第 4 行的两个结果,因为 A 未列出。

我的sql有什么问题...

SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV  = 'A'
UNION ALL
SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV  = 'B'
GROUP BY ID
HAVING MAX(ABBREV) = 'A'
sql db2
1个回答
0
投票

尝试使用exists,但我不确定我是否理解你的意思

SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'A'

UNION ALL

SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'B'
AND NOT EXISTS (
    SELECT 1
    FROM TABLE_X
    WHERE ID = 1
    AND ABBREV = 'A'
)

© www.soinside.com 2019 - 2024. All rights reserved.