【发布时间】:2017-07-14 00:03:18
【问题描述】:
我有一个 T-SQL 报价表,需要能够计算过去几个月有多少报价处于打开状态。
我必须使用的日期是“Add_Date”时间戳和“Update_Date”时间戳。一旦将报价放入“1”的“Closed_Status”,就无法再更新。因此,“Update_Date”实际上变成了Closed_Status 时间戳。
我被困住了,因为我不知道如何选择在特定月份打开的所有打开的报价。
以下是一些示例记录:
Quote_No Add_Date Update_Date Open_Status Closed_Status
001 01-01-2016 NULL 1 0
002 01-01-2016 3-1-2016 0 1
003 01-01-2016 4-1-2016 0 1
期望的结果是:
Year Month Open_Quote_Count
2016 01 3
2016 02 3
2016 03 2
2016 04 1
我在这个问题上碰到了一堵心理墙,我试图做一些case when 过滤,但我似乎无法弄清楚这个谜题。理想情况下,我不会对日期进行硬编码,因为它跨越数年,而且我不想在编写后维护它。
提前感谢您的帮助。
【问题讨论】:
-
即使计数器为 0,您是否要显示月份?
-
请注意,您可能指的是
DateTime、DateTime2或Date,但不是Timestamp,因为TimeStamp实际上是一个自动递增的二进制值,没有任何内容与实际日期/时间有关。
标签: sql sql-server tsql datetime