SELECT ISNULL(所属部门, '合计') AS 单位部门名称, 
      SUM(已归档 + 已执结 + 执行中 + 审理已下派 + 未派案) AS 合计, SUM(已归档) 
      AS 已归档, SUM(已执结) AS 已执结, SUM(执行中) AS 执行中, SUM(审理已下派) 
      AS 审理已下派, SUM(未派案) AS 未派案
FROM (SELECT 单位部门信息表.单位部门名称 AS 所属部门, 
              CASE WHEN 案件状态 = '已归档' THEN CAST(COUNT(*) AS INT) 
              ELSE 0 END AS 已归档, 
              CASE WHEN 案件状态 = '已执结' THEN CAST(COUNT(*) AS INT) 
              ELSE 0 END AS 已执结, 
              CASE WHEN 案件状态 = '执行中' THEN CAST(COUNT(*) AS INT) 
              ELSE 0 END AS 执行中, 
              CASE WHEN 案件状态 = '审理已下派' THEN CAST(COUNT(*) AS INT) 
              ELSE 0 END AS 审理已下派, 
              CASE WHEN 案件状态 = '未派案' THEN CAST(COUNT(*) AS INT) 
              ELSE 0 END AS 未派案
        FROM 单位部门信息表 INNER JOIN
              案件信息表 ON 案件信息表.承办部门 = 单位部门信息表.单位部门名称
        GROUP BY 案件信息表.案件状态, 单位部门信息表.单位部门名称) AS T
GROUP BY 所属部门, 所属部门 WITH ROLLUP
ORDER BY 单位部门名称 DESC显示结果为 : 单位部门名称  合计  已归档   已执结   执行中  审理已下派
              稽查一所       12     3        4        0         2
              稽查四所       1      1        0        0         0 
              稽查三所       1      1        0        0         0   
              稽查二所       1      1        0        0         0  
              合计           15    在单位部门信息表中有所有单位名称,可案件信息里只有这几个有数据所以只能显示这几个 ,如何 显示所有稽查所的名称??

解决方案 »

  1.   


    SELECT ISNULL(所属部门, '合计') AS 单位部门名称, 
          SUM(已归档 + 已执结 + 执行中 + 审理已下派 + 未派案) AS 合计, SUM(已归档) 
          AS 已归档, SUM(已执结) AS 已执结, SUM(执行中) AS 执行中, SUM(审理已下派) 
          AS 审理已下派, SUM(未派案) AS 未派案 
    FROM (SELECT 单位部门信息表.单位部门名称 AS 所属部门, 
                  CASE WHEN 案件状态 = '已归档' THEN CAST(COUNT(*) AS INT) 
                  ELSE 0 END AS 已归档, 
                  CASE WHEN 案件状态 = '已执结' THEN CAST(COUNT(*) AS INT) 
                  ELSE 0 END AS 已执结, 
                  CASE WHEN 案件状态 = '执行中' THEN CAST(COUNT(*) AS INT) 
                  ELSE 0 END AS 执行中, 
                  CASE WHEN 案件状态 = '审理已下派' THEN CAST(COUNT(*) AS INT) 
                  ELSE 0 END AS 审理已下派, 
                  CASE WHEN 案件状态 = '未派案' THEN CAST(COUNT(*) AS INT) 
                  ELSE 0 END AS 未派案 
            FROM 单位部门信息表 left JOIN    -----此處改為左連接
                  案件信息表 ON 案件信息表.承办部门 = 单位部门信息表.单位部门名称 
            GROUP BY 案件信息表.案件状态, 单位部门信息表.单位部门名称) AS T 
    GROUP BY 所属部门, 所属部门 WITH ROLLUP 
    ORDER BY 单位部门名称 DESC 
      

  2.   

    FROM 单位部门信息表 left JOIN    -----此處改為左連接
                  案件信息表 ON 案件信息表.承办部门 = 单位部门信息表.单位部门名称 
     
    改为
            FROM 单位部门信息表 LEFT OUTER JOIN
                  案件信息表 ON 案件信息表.承办部门 = 单位部门信息表.单位部门名称 AND 
                  单位部门信息表.科所分类代码 >= 0为什么还显示 科所分类代码为-1的数据呢?
      

  3.   


    FROM 单位部门信息表 LEFT OUTER JOIN 
                  案件信息表 ON 案件信息表.承办部门 = 单位部门信息表.单位部门名称 
    where   单位部门信息表.科所分类代码 >= 0   -----改為where