这是我的场景。我有一张这样的桌子:
-------------------------------------------------- ---------------- | 票 | 开始日期 | 完成日期 | -------------------------------------------------- ---------------- | 123 | 12 年 4 月 1 日 | 2012 年 4 月 20 日 | | 124 | 12 年 4 月 4 日 | 2012 年 4 月 28 日 | | 125 | 2012 年 4 月 16 日 | 空 | | 126 | 2012 年 4 月 28 日 | 12 年 5 月 4 日 | | 127 | 12 年 5 月 2 日 | 空 | -------------------------------------------------- ----------------
我需要得到这样的结果集:
-------------------------------------------------- ---------------- | 周 | 打开| 关闭| 活跃 | -------------------------------------------------- ---------------- | 5 | 3 | 2 | 50 | | 6 | 4 | 5 | 49 | | 7 | 2 | 6 | 45 | | 8 | 5 | 4 | 46 | -------------------------------------------------- ----------------
基本上,我想查看在给定的一周内打开了多少张票,关闭了多少张,以及在那一周内有多少张只是处于活动状态(之前打开过,但尚未关闭)。
我想我可能已经想出了如何推导出打开和关闭,但我真的很难从中查询活动列。有任何想法吗?
更新:根据要求添加信息。
这是针对 SQL 的。
到目前为止我的查询是这样的,它还不包括活动:
选择
一周,
a.创建,
b.关闭
从
(
选择
DATEPART(WEEK, t.[start date]) AS week,
COUNT(t.[ticket]) AS 打开
FROM sqltable AS t
WHERE [开始日期] > GETDATE() - 69 -- 过去 10 周
通过...分组
DATEPART(WEEK, t.[开始日期])
) 作为一个
左连接
(
选择
DATEPART(WEEK, t.[完成日期]) 作为周,
COUNT(t.[ticket]) 已关闭
FROM sqltable AS t
WHERE [完成日期] > GETDATE() - 69 -- 过去 10 周
通过...分组
日期部分(周,t.[完成日期])
) 作为乙
ON a.week = b.week
一周订购;