如何根据条款进行多次计数

时间:2017-01-23 20:46:03

标签: sql

一些示例数据:

Id    name    value    ref
1     ab      xy
2     aba     z
3     ab      xy
4     abc     def
5     gxr     mdy

我要做的是获得不止一次出现的两列 所以将选择第1行和第3行。

select name, value from table_x 
where value is not null group by name having count(name) >= 2 
and having count(value) >= 2;

被困了.....

2 个答案:

答案 0 :(得分:3)

如果你只关心找到不止一次出现的不同名称/值对,那么@ pkp的回答是正确的。但是,如果您确实希望满足条件的各行,请尝试以下方法:

SELECT  t1.Name, t1.[Value]
FROM    Table_X t1
JOIN
(
    SELECT  Name, [Value]
    FROM    Table_X
    where   [Value] IS NOT NULL
    GROUP   BY Name, [Value]
    HAVING  COUNT(1) >= 2
) t2 ON t1.Name = t2.Name AND t1.[Value] = t2.[Value]

答案 1 :(得分:1)

您的语法不正确。 group by名称和值,并在此后检查计数> = 2。

select name, value 
from table_x 
where value is not null 
group by name, value 
having count(*) >= 2;