【发布时间】:2019-08-01 15:09:15
【问题描述】:
我正在尝试计算每年的项目总数。以及有多少项目处于活动状态,有多少项目被取消。
我尝试按项目日期的原因分组,所以我们每年都有项目总数,但我不确定从哪里开始以及做什么
Select ts.Id as projectid ,
--a.ParentObjectId,
ts.RequestName as ProjectDates,
ts.Type,
ts.Category,
ts.SubType,
ts.status as projectstatus,
Count (ts.ReceptionDate),
cast (ts.ReceptionDate as Date) as ReceptionDate,
from [rpt].[TransmissionServicesRpt] ts
left join [dbo].[AuditHistory] a on a.ParentObjectId = ts.Id
Left join [dbo].[User] u on a.CreatedById = u.id
Group by ts.id, ts.ReceptionDate
+ -------------+--------+------------+------------+- ---------+------------------+
|新项目 |活跃 |取消 |终止 |不活跃 |发扬光大 |
+ -------------+--------+------------+------------+- ---------+------------------+
| 2013 | 32 | 45 | 4 | 11 | 30 |
| 2014 | 45 | 75 | 17 | 14 | 44 |
| 2015 | 46 | 90 | 25 | 21 | 44 |
| 2016 | 30 | 74 | 27 | 10 | 37 |
| 2017 | 82 | 119 | 11 | 26 | 82 |
| 2018 | 86 | 168 | 29 | 24 | 115 |
| 2019 | 23 | 138 | 9 | 4 | 125 |
+ -------------+--------+------------+------------+- ---------+------------------+
【问题讨论】:
-
查看您开始使用的数据会很有帮助。你如何定义活跃?取消?等等?
-
基于具有所需结果的表,您希望按 YEAR 列进行分组。然后使用conditional aggregation 获取其他每一列的总和。我会在答案中写一些 SQL,但我们需要更多地了解您的数据才能做到这一点。
-
ProjectId 状态日期 1589 有效 2018 年 8 月 29 日 1566 无效 2018 年 4 月 17 日 1042 取消 2014 年 1 月 6 日 1374 完成 2015 年 1 月 20 日 1543 完成 2014 年 8 月 4 日 1065 取消 7/ 15/2014 1397 完成 10/1/2012 1520 无效 4/13/2017 1420 完成 1/1/2015 1443 完成 1/1/2015 1048 取消 10/16/2014 1002 有效 2/6/2017 1357 完成 1/19 /2017 1606 活跃 11/6/2018
-
来自项目状态
-
我看不懂。在问题上使用edit link 并将其添加到问题的底部。使用
<pre>块对其进行格式化。
标签: sql sql-server