SQL Server 2012查询多个但不是所有列计数
我正在为SQL Server 2012中的应用程序生成查询。这个查询应该从SQLServer的一个表中获取各种状态 表的结构如下所示:SQL Server 2012查询多个但不是所有列计数,sql,Sql,我正在为SQL Server 2012中的应用程序生成查询。这个查询应该从SQLServer的一个表中获取各种状态 表的结构如下所示: ProjectType | Team | ProjectStatus ---------------------------------- Proj1 B Rec Proj1 B Rec Proj1 B Hold Proj2 B Rec P
ProjectType | Team | ProjectStatus
----------------------------------
Proj1 B Rec
Proj1 B Rec
Proj1 B Hold
Proj2 B Rec
Proj3 A Hold
Proj4 C Some
我想要的结果是:
ProjectType | Total | Team | Rec| Hold | Some |
-----------------------------------------------
Proj1 3 B 2 1 0
Proj2 1 B 1 0 0
Proj3 1 A 0 1 0
Proj4 1 C 0 0 1
我认为这是可能的,因为我知道他们的所有状态:
所有状态都是
Rec, BA, DQ, P, Prev, PRed, PCom, 90, 90Rev, 90Red, 90Com, SS, SSRed, D, C
到目前为止,我所尝试的:
select
ProjectType, Team, count(ProjectStatus)
from
sites
where
(ProjectType is not null and ProjectType <> '') and Team <> ''
group by
ProjectType, Team
select
s.ProjectType, S.Team, S.ProjectType, C.cnt
from
Sites s
Inner Join
(Select ProjectType, Count(ProjectStatus) as cnt
from Sites
Where ProjectStatus = 'Rec' group By ProjectType) C on S.ProjectType = c.ProjectType
每个状态,我有,以便计算他们都单独
编辑:但是输出是错误的,它计算了所有不同项目的相同项目类型(比如我有10个不同的项目),它显示了所有相同的项目10次
有没有更好的方法来做这件事-有人能帮我完成吗 根据您的问题,您似乎有多个状态(所有已知),并希望按状态显示计数——将状态放在顶部。使用PIVOT有很多方法可以做到这一点,但我现在还没有在一台有开发人员资源的计算机上,所以我会这样做(在我的头脑中——未经测试)
谢谢您的回答!我想我可以从这个开始,计数(*)作为总计,但是应该只计算该项目类型,就像只计算该项目类型的(rec、BA、DQ…等等)一样。还没有测试过这个。当有一个问题,我无法找到正确的地方把它。。。有些项目类型为空(null)我尝试添加到Where,但似乎没有任何有效的想法?您想如何处理
null
ProjectType?抱歉,我有更多的列不需要用于此查询,有些项目类型为空,但我只是使用了错误的语法进行快速修复。。。我正在检查nul的ProjectStatus,而不是我想要的ProjectType。。谢谢你的帮助,一切都很好!!
Inner Join ( Select ProjectType, Count(ProjectStatus) as cnt from Sites
Where ProjectStatus='Rec' group By ProjectType) C
on S.ProjectType = c.ProjectType
select
ProjectType,
count(*) as Total,
Team,
sum(case when ProjectStatus = 'Rec' then 1 else 0 end) as 'Rec',
sum(case when ProjectStatus = 'Hold' then 1 else 0 end) as 'Hold',
sum(case when ProjectStatus = 'Some' then 1 else 0 end) as 'Some'
from
sites
where
ProjectStatus in ('Rec', 'Hold', 'Some')
group by
ProjectType,
Team