SQL结合并显示总数

时间:2016-05-10 15:29:45

标签: sql sql-server tsql

下午好,

我一直在努力创建一个小表,总计与行业相关的一些数字。

我需要做的是将多行合并为一行。数值代表每个行业内的项目数量,两个表通过子选项中的Expense Cat ID连接。

子查询示例:

 ,(SELECT COUNT (*) FROM [projects]
  left join [territory]
  on projects.territoryid = territory.territoryid
  WHERE expense_category.expensecategoryid = projects.expense_category
  AND projects.status = 'Live'
  ) AS [Live Projects]

所以我想要实现的是行的组合,其中费用类别的名称相同,然后组合行。

简而言之:

CREATE view [dbo].[Industry_Projects_figures] as
WITH [top25_industries] as (
SELECT expense_cat
   ,(Select COUNT(projectid) from project_table
where project = live) as [Live projects]
   ,(Select COUNT(projectid) from project_table
where project = live) as [Cancelled Projects]
   ,(Select COUNT(projectid) from project_table
where project = live) as [Completed]
From industry_table
GROUP BY expense_cat
)
select TOP 25 [top25_industries].*,
   [Live Projects] + [Cancelled]  + [Completed]  as [Grand Total]
   FROM [top25_industries]
   ORDER BY [Grand Total] DESC

结束制作:

Industry:
Utilities & Energy    19  143   117   451       
Utilities & Energy   172   69    98   339           
Utilities & Energy    43   21    23    87

每一行代表父母和两个子子行业!所以我需要把它们结合起来:(

2 个答案:

答案 0 :(得分:0)

选择总和(已取消)超过(由expense_cat分区)            + sum(已完成)(由expense_cat分区)        来自top25_industries

如果expense_Cat列是'Utilities&能源专栏,它应该总结每个行业的已取消和已完成的总数。

答案 1 :(得分:0)

我今天想出来了!

我做错了是我的第二个选择,我本应该通过expense_cat进行GROUPing,你可以从上面的代码中看到我是从临时表中选择*,我只是选择了Expense Cat并按其分组。现在桌子看起来好多了。

此外,我还有猫的名字相似但不一样,E.G其他 - 培根,其他 - 培根兹,其他 - MOAR培根。

我需要做的就是在我的第一个选择中设置一个CASE WHEN子句来过滤任何名字为LIKE的expense_cats'其他%'那么'其他'使我的第二个选择能够将它们组合在一起! :)