Pyt*_*_DK 2 sql t-sql sql-server datetime
我有一个T-SQL报价表,需要能够计算过去几个月中有多少报价处于未结状态.
我必须使用的日期是' Add_Date'时间戳和' Update_Date'时间戳.一旦引用被放入' Closed_Status'of' 1',它就不能再被更新了.因此,' 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
Run Code Online (Sandbox Code Playgroud)
期望的结果是:
Year Month Open_Quote_Count
2016 01 3
2016 02 3
2016 03 2
2016 04 1
Run Code Online (Sandbox Code Playgroud)
我已经在这个问题上打了一个精神墙,我试图做一些case when过滤,但我似乎无法想象出这个难题.理想情况下,我不会在日期中进行硬编码,因为这需要多年时间,而且我不希望在编写之后保持这一点.
预先感谢您的帮助.
你这个月是这样做的.因此,我想到了三种选择:
left join.让我展示一下:
with n as (
select row_number() over (order by (select null)) - 1 as n
from master..spt_values
)
select format(dateadd(month, n.n, q.add_date), 'yyyy-MM') as yyyymm,
count(*) as Open_Quote_Count
from quotes q join
n
on (closed_status = 1 and dateadd(month, n.n, q.add_date) <= q.update_date) or
(closed_status = 0 and dateadd(month, n.n, q.add_date) <= getdate())
group by format(dateadd(month, n.n, q.add_date), 'yyyy-MM')
order by yyyymm;
Run Code Online (Sandbox Code Playgroud)
这确实假设每个月至少有一个开放记录.这似乎是合理的.
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |