Я пытаюсь получить два разных счета в одном столбце. Первый счетчик отлично работает с заданными ограничениями, но второй счет не считается правильно. У меня есть две таблицы, которые DailyFieldRecord
и AB953
. DailyFieldRecord
содержит: DailyFieldRecordID
и ActivityCodeID
. Таблица AB953
содержит: DailyFieldRecordID, ItemID, and GroupID
. Count1
вернет счетчик DailyfieldrecordID's
, который содержит ActivityCodeID=387
и GroupID=260
и который НЕ имеет ItemID in (1302,1303,1305,1306)
. Count2
вернет счетчик DailyfieldrecordID's
, который содержит ActivityCodeID=387
и GroupID=260
, и который имеет ItemID in (1302,1303,1305,1306)
. Я пытаюсь получить только число GroupID =260
для каждого DailyFieldRecordID
, которое соответствует вышеуказанным ограничениям.
DailyFieldRecord: AB953:
DailyFieldRecordID ActivityCodeID DailyFieldRecordID: ItemID: GroupID:
657 387 657 1305 210
888 420 657 1333 260
672 387 657 1335 260
657 1302 210
657 1334 260
657 1111 111
888 1302 210
888 1336 260
672 1327 260
672 1334 260
672 1335 260
672 1322 260
672 1222 420
Expected Output:
Count1: Count2:
4 3
Count1 is supposed to count: Count2 is supposed to count:
672 1327 260 657 1333 260
672 1334 260 657 1335 260
672 1335 260 657 1334 260
672 1322 260
Current Count:
Count1: Count2:
4 6
SELECT sum(CASE WHEN ex=0 THEN 1 ELSE 0 END) AS COUNT1,sum(EX) AS COUNT2
FROM AB953 ab
JOIN DailyFieldRecord dfr
ON dfr.DailyFieldRecordID = ab.DailyFieldRecordID
JOIN ( SELECT AB1.DailyFieldRecordID,sum(CASE WHEN AB1.ItemID IN
(1302,1303,1305,1306) THEN 1 ELSE 0 END) AS EX
FROM AB953 AB1
GROUP BY AB1.DailyFieldRecordID) T
ON dfr.DailyFieldRecordID = T.DailyFieldRecordID
WHERE dfr.ActivityCodeID = 387
AND ab.GroupID = 260