2013-08-17 2 views
1

я следующая таблица на месте ...Собирайтесь вместе и вместе?

 ID  awaiting approve decline  
     100  1   0   0  
     100  0   0   1  
     102  1   0   0  
     103  0   1   0  
     104  0   1   0  
     104  0   1   0  
     106  1   0   0  
     107  0   1   0  
     107  1   0   0  
     107  1   0   0 

из приведенных выше таблиц, что я хочу, чтобы получить это, если количество ID перечислена более чем один раз и один из ID или два или все Ожидание идентификатора = 1? подсчитайте эти идентификаторы, выполнив вышеуказанное условие.

и еще один запрос, в котором я нуждаюсь, в котором, если идентификатор указан только и один раз и ожидает = 1;

Пожалуйста, помогите ....

+0

По крайней мере, после желаемый результат для обоих ваших запрашиваемых запросов на основе по вашим данным образца – peterm

+0

, почему вы дали мне нагативный вариант? –

+0

Я только что спросил, если не ясно спросить, чтобы я мог уточнить больше ... Но почему отрицательный? –

ответ

7

Первый

SELECT COUNT(*) total 
    FROM 
(
    SELECT id 
    FROM Table1 
    GROUP BY id 
    HAVING COUNT(*) > 1 
    AND MAX(awaiting = 1) > 0 
) q 

Второй

SELECT COUNT(*) total 
    FROM 
(
    SELECT id 
    FROM Table1 
    GROUP BY id 
    HAVING COUNT(*) = 1 
    AND MAX(awaiting = 1) > 0 
) q 

Здесь SQLFiddle демо

+0

+1 очень хороший код, но удаление 'q' с конца не работает почему? –

+0

@TusharGupta Это не работает без 'q', потому что каждая производная таблица (подзапрос) должна иметь псевдоним. Здесь 'q' является псевдонимом. – peterm

+0

oh .. !! Это означает, что он работает так: SELECT COUNT (*) total FROM q' и 'q' is' SELECT id FROM Table1 GROUP BY id HAVING COUNT (*) = 1 И MAX (ожидание = 1)> 0' –