【发布时间】:2015-03-21 12:56:34
【问题描述】:
我有下表,其中我需要将type = D 计为 1,但如果该 ID 以 R 结尾,则它应计为 0。
ID 123 总是以 D 开头,然后可以是 R,然后可以是 D 或 A。
ID Decision Dt Type/Status
123 1/15/2014 D
123 1/20/2014 A
123 1/15/2014 R
我已将 SQL 编写为sum(if(type=d)then 1 else 0 end)。在type/status 是 R 之前,我得到了正确的计数。这是 DB 中唯一以状态 R 结尾且未移动到 D 的 ID。我需要帮助来编写 sql。
提前感谢您的帮助。
【问题讨论】:
-
你正在使用哪个数据库以及如何查找ID以R结尾
-
@NoDisplayName - 我正在使用 Teradatabase
-
@NoDisplayName - 这些 ID 可以被处理 (D) 和 R(Reverse Disposed).. 并且可以根据决策日期查看..
-
因此,在您的情况下,您将计算 1,因为 ID 123 的最新日期是 1 月 20 日,类型为 A。如果该记录不存在,则 R 将与 D 在同一天,然后ID 123 的最后一天。然后数 0 还是 1?可以有多个 D 和 R 吗?如果是这样,我们是否仍然只查看最后一条记录并检查 R,我们会计算 Ds 还是不管有多少 Ds 总是 1?
-
@ThorstenKettner - 在这种情况下,即使最新日期是 A(我们可以忽略 As),我们也只计算 D 的数量。每个 ID 可以有超过 1 个 Ds 和 Rs。 ID 总是以 D 开头并以 R 或 A 结尾,在这种情况下,它在同一天同时具有状态(R 和 D),因此它以 R 结尾并且计数应为 0。例如,如果它具有 D--> R --> D 那么 count 应该是 2 如果我们只有 D--> A 那么 count 应该是 1 如果我们有 D-->R-->A 那么 count 应该是 0 (因为它以 R 结尾)我们始终查看该 ID 的最后状态,忽略 As
标签: sql if-statement count nested case