Sql 查询的主要问题

Sql 查询的主要问题,sql,Sql,我有一个问题 SELECT ZEML.ICC_CODE AS ICC_CODE ,SUM(CS.TOT_HOURS) AS TOT_HOURS ,SUM(CS.NUM_INCIDENT_ALL) AS NUM_INCIDENTS ,(VALUE(FLOAT(SUM(CS.NUM_INCIDENT_ALL)) * 200000 / SUM(TOT_HOURS) ,0)) AS INC_RATE FROM TR.CLAIMS_SUMM CS INNER JOIN TR

我有一个问题

SELECT 
  ZEML.ICC_CODE AS ICC_CODE 
 ,SUM(CS.TOT_HOURS) AS TOT_HOURS 
 ,SUM(CS.NUM_INCIDENT_ALL) AS NUM_INCIDENTS 
 ,(VALUE(FLOAT(SUM(CS.NUM_INCIDENT_ALL)) * 200000 / SUM(TOT_HOURS) 
 ,0)) AS INC_RATE 

 FROM TR.CLAIMS_SUMM CS 

INNER JOIN TR.LOCATION_MASTER LM 
   ON LM.LOCATION = CS.LOCATION 
  AND CS.LOCATION < '900' 

 LEFT JOIN TR.LOCATION_ASSIGNMENTS DISTRICT 
   ON DISTRICT.LOCATION = LM.LOCATION 
  AND DISTRICT.ASSIGNMENT_TYPE = 'District' 

 LEFT JOIN TR.LOCATION_ASSIGNMENTS TERRITORY 
   ON TERRITORY.LOCATION = LM.LOCATION 
  AND TERRITORY.ASSIGNMENT_TYPE = 'Territory' 

 LEFT JOIN TR.EMPL_CLAIMS ZEML 
   ON CS.LOCATION = ZEML.LOCATION 
  AND ZEML.TYPE = 'WC' 
  AND ZEML.STATUS <> 'V' 
  AND ZEML.CLAIM_ACTION NOT IN ('D','F','I','H') 

WHERE CS.DW_DATE BETWEEN '01/01/2014' 
  AND '05/31/2014' 
  AND (MONTH(ZEML.DATE_OF_INCIDENT) = MONTH(CS.DW_DATE) 
  AND YEAR(ZEML.DATE_OF_INCIDENT) = YEAR(CS.DW_DATE)) 

GROUP BY ZEML.ICC_CODE 

UNION 

SELECT 
'OTHER' AS ICC_CODE 
 , 0 AS TOT_HOURS 
 , 0 AS NUM_INCIDENTS 
 , 0 AS INC_RATE 

 FROM SYSIBM.SYSDUMMY1 

WHERE 1 = 1 

ORDER BY 1 
在我创建了一个other的工会中,我希望从tr.emp_索赔表中选择所有其他内容,并将其存储在工会的other中,因为这是我拥有的许多其他ICC代码中没有事件,我正在根据所有数据计算我们的事件率和时间,但我现在的查询只是选择当前发生的事件使我无法进行计算。

从您使用的From SYSIBM.SYSDUMMY1中,我相信您使用的是DB2数据库。如果是,您可以使用CTE公共表表达式来实现所需的结果,如

WITH cte1 AS
(
SELECT 
  ZEML.ICC_CODE AS ICC_CODE 
 ,SUM(CS.TOT_HOURS) AS TOT_HOURS 
 ,SUM(CS.NUM_INCIDENT_ALL) AS NUM_INCIDENTS 
 ,(VALUE(FLOAT(SUM(CS.NUM_INCIDENT_ALL)) * 200000 / SUM(TOT_HOURS) 
 ,0)) AS INC_RATE 

 FROM TR.CLAIMS_SUMM CS 

... <rest of the code> ...
)

select * from cte1

UNION ALL

SELECT 
ICC_CODE 
 , 0 AS TOT_HOURS 
 , 0 AS NUM_INCIDENTS 
 , 0 AS INC_RATE 
 FROM TR.EMPL_CLAIMS 
 WHERE ICC_CODE NOT IN 
 (
   SELECT distinct ICC_CODE
   FROM cte1 
 )
ORDER BY 1 
可以使用IN运算符将其转换为以下内容

请参阅有关DB2中公共表表达式的更多信息。
希望这能有所帮助。

您使用的是什么DBMS?在我看来,它很像DB2数据库。如果单击“投票”按钮下的“检查”按钮有帮助,请不要忘记接受答案。
 LEFT JOIN TR.LOCATION_ASSIGNMENTS DISTRICT 
   ON DISTRICT.LOCATION = LM.LOCATION 
  AND DISTRICT.ASSIGNMENT_TYPE = 'District' 

 LEFT JOIN TR.LOCATION_ASSIGNMENTS TERRITORY 
   ON TERRITORY.LOCATION = LM.LOCATION 
  AND TERRITORY.ASSIGNMENT_TYPE = 'Territory' 
 LEFT JOIN TR.LOCATION_ASSIGNMENTS DISTRICT 
   ON DISTRICT.LOCATION = LM.LOCATION 
  AND DISTRICT.ASSIGNMENT_TYPE IN ('District', 'Territory')