Как игнорировать строки из таблицы tbl2, в то время как основная таблица находится в таблице tbl1 в sql? - PullRequest
1 голос
/ 22 февраля 2011
Visit
tmstamp,   trackno, qno, service
01/01/2011,1,       01,  Sv1
01/01/2011,2,       03,  Sv1
01/01/2011,3,       04,  Sv2
01/01/2011,4,       06,  Sv2
01/02/2011,1,       01,  Sv1

Matter
tmstamp,   trackno, code
01/01/2011,1,       a
01/01/2011,1,       b
01/01/2011,1,       e
01/01/2011,2,       c
01/01/2011,2,       b
01/01/2011,3,       c
01/01/2011,3,       a
01/01/2011,4,       d
01/01/2011,4,       c
01/02/2011,1,       a
01/02/2011,1,       b

select service, count(qno) as 'qno_served' from visit group by service

service, qno_served
SV1,     3
SV2,     2

Мое текущее утверждение состоит в том, сколько qno у них есть для каждого service.

. Я хочу изменить свое утверждение, чтобы связать его с таблицей matter.И проверьте, есть ли у каждого qno code "a".

Если qno имеет code "a", я не хочу подсчитывать.

Итак, мой окончательный результат будет следующим:

service, qno_served
SV1,     1
SV2,     1

Должен ли я использовать метод join или wht, чтобы получить это?

Ответы [ 2 ]

4 голосов
/ 22 февраля 2011

Попробуйте:

SELECT Service, COUNT(qno) AS [qno_served]
  FROM Visit
 WHERE NOT EXISTS (
    SELECT * FROM Matter WHERE Matter.TrackNo = Visit.TrackNo AND Matter.code = 'a')
 GROUP BY Service
1 голос
/ 26 февраля 2011
SELECT 
 V.service
,COUNT(1) AS qno_served

FROM MyDatabase.dbo.Visit AS V

LEFT JOIN (
    SELECT DISTINCT
    M.trackno

    FROM MyDatabase.dbo.Matter AS M

    WHERE M.code = 'a'
) AS T
    ON V.trackno = T.trackno

WHERE T.Trackno IS NULL

GROUP BY V.service

ORDER BY service
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...