2017-01-23 2 views
0

некоторые образцы данных:как мне сделать несколько подсчета под предложением HAVING

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; 

получил stucked .....

ответ

1

Вашего синтаксис неверен. group by имя и значение, а затем проверьте счетчик> = 2.

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

@ Ответ vkp правильный, если вы только заботитесь о поиске отдельных пар имя/значение, которые появляются более одного раза. Но если вы действительно хотите, чтобы отдельные ряды удовлетворяли критериям, попробуйте следующее:

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] 
Смежные вопросы