我有一个工作查询,它计算表 LDS 中的所有不同值,其中 STATUS = 'OK' AND DATE >= '2012' 并且如果有多个相同的 ID,那么如果该 ID 的状态为“ok”,则计算具有最新日期的 ID “:
计数(不同的 lds1.ID) 从 LDS lds1 左连接 LDS lds2 ON lds1.ID = lds2.ID AND lds1.Date < lds2.Date 和 lds1.Status = 'ok' 在哪里 lds1.Date >= '2012' 和 lds1.Status = 'ok' 并且 lds2.ID 为 NUL
我现在需要在运行上述查询之前添加另一个条件为 TRUE:“仅考虑 STATUS=NULL AND DATE>= 2011 的 ID”。STATUS = NULL 的初始 ID 实例不计入结果;它只是确定是否应该考虑 ID。
表 LDS: 身份证 | 状态 | 日期 1 | 空 | 2011 1 | 好的 | 2012 2 | 坏| 2012 1 | 坏| 2013 3 | 空 | 1999 3 | 好的 | 2012 4 | 好的 | 2012 5 | 空 | 2011 5 | 好的 | 2012 6 | 空 | 2012
完整查询的预期结果是 ID“5”。
更新:
也许这可以用数组来解决?
1. 从表 LDS 中取出 STATUS=NULL AND DATE>=2011 的所有 ID 并放入数组(结果:ID1、ID5、ID6)
2. 对于数组中的每个 ID,检查表中的所有实例并选择具有最大日期和状态不为空(结果:ID1,ID5)
3. 计算其中有多少状态=OK(结果:ID5)