很抱歉,标题的描述性不强,我不是母语。 所以我有下表NUMBERS
A..B..C..YEAR
1..1..1..2019
2..1..0..2019
2..2..1..2019
2..3..1..2019
2..4..1..2020
当C列为1时,一年中每个A列的值在B列中都应该只有一个值。如果有多个,那是我需要找出的错误。
因此,我应该进行查询,在此示例中为我提供第3行和第4行。我尝试如下进行操作,但这也给了我第5行,因为“拥有计数”似乎遍历了所有年份,其中只想在给定年份中进行查找。我如何包括不同B的年份?
SELECT A, B
FROM NUMBERS
WHERE A IN (
SELECT A
FROM NUMBERS
WHERE C = 1
AND YEAR = 2019
GROUP BY A
HAVING COUNT (DISTINCT B) > 1
)
;
答案 0 :(得分:0)
如果我的理解正确,那么您想要包含多个“ b”值的行:
select n.*
from (select n.*,
min(b) over (partition by a, year) as min_b,
max(b) over (partition by a, year) as max_b
from numbers n
where n.c = 1
) n
where min_b <> max_b
答案 1 :(得分:0)
也许您可以将年份添加到分组依据。
SELECT A, B
FROM NUMBERS
WHERE A IN (
SELECT A
FROM NUMBERS
WHERE C = 1
AND YEAR = 2019
GROUP BY YEAR, A
HAVING COUNT (DISTINCT B) > 1
)
;