这是我的场景。我有一张这样的桌子:
-------------------------------------------------- ---------------- | 票 | 开始日期 | 完成日期 | -------------------------------------------------- ---------------- | 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 一周订购;