SQL 查询查看

SQL Query to View

我正在尝试将以下查询转换为视图,但是我收到以下执行错误:

谁能指出我哪里出错了?

应该看起来像:

Financial Year  VOLUME  # Cases 5mins   # Cases 10mins  # Cases 15mins  # Cases 20mins            
2014/15         1490200      1029             6732            10163        11798    
2015/16         1548700     1143                7286          10693         12338  
etc...

代码:

 SELECT t1.[Financial Year], t1.[VOLUME], t2.[# Cases 5mins], t3.[# Cases 10mins], t4.[# Cases 15mins], t5.[# Cases 20mins]
FROM 
    (SELECT [Financial Year], CAST(COUNT([Event Number]) AS DECIMAL)  *100 as 'VOLUME' FROM tblCAD 
 WHERE [AO-NonPublicEvent] = 1 AND [Reporting Exclusions] = 0 AND [Reporting Priority] = '1'
GROUP BY [Financial Year]) t1
left join
    (SELECT [Financial Year], CAST(COUNT([Event Number]) AS DECIMAL) as '# Cases 5mins' from tblCAD 
WHERE  [AO-NonPublicEvent] = 1 AND [Reporting Exclusions] = 0 AND CAST([Response Time] AS DECIMAL(9,2))/60 <= 5 AND [Reporting Priority] = '1'
GROUP BY [Financial Year]) t2

ON (t1.[Financial Year] = t2.[Financial Year]) 
left join 
  (SELECT [Financial Year], CAST(COUNT([Event Number]) AS DECIMAL) as '# Cases 10mins' from tblCAD 
WHERE  [AO-NonPublicEvent] = 1 AND [Reporting Exclusions] = 0 AND CAST([Response Time] AS DECIMAL(9,2))/60 <= 10 AND [Reporting Priority] = '1'
GROUP BY [Financial Year]) t3
on (t1.[Financial Year] = t3.[Financial Year])
left join 
  (SELECT [Financial Year], CAST(COUNT([Event Number]) AS DECIMAL) as '# Cases 15mins' from tblCAD 
WHERE  [AO-NonPublicEvent] = 1 AND [Reporting Exclusions] = 0 AND CAST([Response Time] AS DECIMAL(9,2))/60 <= 15 AND [Reporting Priority] = '1'
GROUP BY [Financial Year]) t4
on (t1.[Financial Year] = t4.[Financial Year])
left join 
  (SELECT [Financial Year], CAST(COUNT([Event Number]) AS DECIMAL) as '# Cases 20mins' from tblCAD 
WHERE  [AO-NonPublicEvent] = 1 AND [Reporting Exclusions] = 0 AND CAST([Response Time] AS DECIMAL(9,2))/60 <= 20 AND [Reporting Priority] = '1'
GROUP BY [Financial Year]) t5
on (t1.[Financial Year] = t5.[Financial Year])

我不确定为什么您的代码无法正常工作。但是使用条件聚合可以大大简化它,然后它可能会起作用:

SELECT [Financial Year],
       COUNT(*) * 100 as VOLUME,
       SUM(CASE WHEN CAST([ Response Time ] AS DECIMAL(9, 2)) / 60 <= 5 THEN 1 ELSE 0 END) as within_5_minutes,
       SUM(CASE WHEN CAST([ Response Time ] AS DECIMAL(9, 2)) / 60 <= 10 THEN 1 ELSE 0 END) as within_10_minutes,
       . . .
FROM tblCAD 
WHERE [AO-NonPublicEvent] = 1 AND
      [Reporting Exclusions] = 0 AND
      [Reporting Priority] = '1'     
GROUP BY [Financial Year];

请注意,您应该修正您的列名,这样它们就不需要转义了。我会建议 Fiscal_YearAO_NonPublic_EventReporting_Exclusions 等。

我也不确定您为什么要将第一个计数乘以 100。以上假设 [Event Number] 不是 NULL。如果是这种情况,那么您需要考虑到这一点。