我正在尝试为我们的事件管理系统运行一些关于数据库的报告(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
答案 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