1

我需要计算表 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)

4

1 回答 1

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
于 2012-04-06T16:20:16.670 回答