SQL Server 2008 - 将来自不同表的SUM查询合并为1个结果集

时间:2015-04-20 22:17:06

标签: sql-server sql-server-2008

我正在尝试为我们的事件管理系统运行一些关于数据库的报告(SQL Sever 2008)。 有2个表,一个包含事件数据,另一个包含任务数据

事件表可能如下所示

Ref#  OpenDate  Category          Group  State
111   1/4/15    IncidentRequest   A      Open
112   1/4/15    ServiceRequest    A      Open
113   2/4/15    SalesRequest      A      Closed
114   3/4/15    IncidentRequest   B      Open

任务表可能如下所示

TaskRef#  OpenDate  Group  State
211       1/4/15    A      Open
212       1/4/15    A      Open
213       4/4/15    B      Closed
214       5/4/15    A      Closed

我想运行一个会返回的查询 A组的OpenDate,SUM(IncidentRequest),SUM(ServiceRequest),SUM(SalesRequest),COUNT(任务) 所以基本上是集团所在的每个OpenDate的所有事件,服务请求,销售请求和任务的数量

理想情况下,我还想尽量减少SQL服务器上的负载,速度不是一个很大的优先级

我已经看过JOINS,UNIONS等,但我对SQL很新,发现自己遭受了一些信息过载。

任何帮助都将不胜感激。

谢谢, DT

1 个答案:

答案 0 :(得分:0)

您可以使用Full Join和条件总和来执行此操作:

Select * From
(
  Select Date,
         Sum(Case When Category = 'Incident Request' Then 1 End) As ir,
         Sum(Case When Category = 'Service Request' Then 1 End) As ser,
         Sum(Case When Category = 'Sales Request' Then 1 End) As sar
  From Incidents
  Where Group = 'A'
  Group By Date
)i
Full Join
(
  Select Date, 
         Count(*) As rc 
  From Tasks
  Where Group = 'A'
  Group By Date
)t On i.Date = t.Date