我需要计算表LDS中所有不同的值status = 'ok' AND date >= '2012-01-01'
并且如果有多个相同的ID,则只检查具有最新日期的ID:如果此id的状态为“ok”,则计算它。
表LDS:
ID | STATUS | DATE 1 | ok | 2012-01-01 2 | bad | 2012-01-01 1 | bad | 2012-02-02 3 | ok | 2012-01-01 4 | ok | 1999-01-01
结果应为“1”(ID 3)
答案 0 :(得分:3)
我假设因为您想要计算不同的ID,所以在重复的情况下计算哪个ID无关紧要,因为这不会影响最终计数:
编辑:更新了查询,以排除后续ID
状态的所有'bad'
:
SELECT COUNT(DISTINCT lds1.ID)
FROM
LDS lds1
LEFT JOIN LDS lds2
ON lds1.ID = lds2.ID
AND lds1.Date < lds2.Date
AND lds2.Status = 'bad'
WHERE
lds1.Date > '2012-01-01'
AND lds1.Status = 'ok'
AND lds2.ID IS NUL