2010-10-29 82 views
2

我创建了这个select语句,我将转换为视图。我需要帮助。我需要能够在报告页面上添加= Yes和No的总数。select sum statement

select 
    ps.BidPackage_ID, 
    ps.Project_ID, 
    SUM (case ps.Minority when 'Yes' then 1 else 0 end) MinorityTotal, 
    SUM (case ps.Gender when 'Female' then 1 else 0 end) FemaleTotal, 
    SUM(case ps.Cleveland_Resident when 1 then 1 else 0 end) ClevelandResidents, 
    ps.SubContractor 
from 
    PersonnelSummary ps 
group by 
    ps.BidPackage_ID, 
    ps.Project_ID, 
    ps.SubContractor 
+0

对于什么数据库? – 2010-10-29 19:40:28

+0

SQL Server?或其他?什么版本? – gbn 2010-10-29 19:40:33

+3

我不清楚你到底想干什么。你能否包含一些样本数据和期望的输出或尝试用另一种方式解释它? – 2010-10-29 19:42:36

回答

1

你几乎有它:

... 
SUM (case ps.Minority when 'Yes' then 1 else 0 end) AS MinorityYes, 
SUM (case ps.Minority when 'No' then 1 else 0 end) AS MinorityNo, 
COUNT(*) AS Total, 
... 

随着Total我假设每一行应该被计算在内。这是你想要什么,如果:

  • 中存在的列中的值只有“是”和“否”
  • 值从“是”和“否”,也应计入不同总数。
+0

要求为“少数民族=是**和**否” – 2010-10-29 19:44:33

+1

所以'MinorityTotal'实际上是'Total'? – 2010-10-29 19:46:22

0

你迫使我们猜你想要什么。你有一些人说他们是少数人,你想要一个说不的人数吗?或者,你是否希望统计“是”或“否”的人数,并排除那些拒绝说“或根本没有答案”的人?

select 
    ps.BidPackage_ID, 
    ps.Project_ID, 
    SUM (case ps.Minority when 'Yes' then 1 else 0 end) MinorityTotalYes, 
    SUM (case ps.Minority when 'No' then 1 else 0 end) MinorityTotalNo, 
    SUM (case ps.Minority when 'Yes' then 1 when 'No' then 1 else 0 end) 
    AS StatedMinorityTotal, 
    SUM (case ps.Gender when 'Female' then 1 else 0 end) FemaleTotal, 
    SUM(case ps.Cleveland_Resident when 1 then 1 else 0 end) ClevelandResidents, 
    ps.SubContractor 
from 
    PersonnelSummary ps 
group by 
    ps.BidPackage_ID, 
    ps.Project_ID, 
    ps.SubContractor