我需要计算表 LDS 中的所有不同值status = 'ok' AND date >= '2012-01-01'
,如果有多个相同的 ID,则只检查具有最新日期的 ID:如果此 ID 的状态为“ok”,则计算它。
表 LDS:
身份证 | 状态 | 日期 1 | 好的 | 2012-01-01 2 | 坏| 2012-01-01 1 | 坏| 2012-02-02 3 | 好的 | 2012-01-01 4 | 好的 | 1999-01-01
结果应为“1”(ID 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