我正在为 SQL Server 2012 中的应用程序构建查询。该查询应该从 SQL Server 的单个表中获取各种状态。
表的结构如下:
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
这是我想添加的地方
Inner Join ( Select ProjectType, Count(ProjectStatus) as cnt from Sites
Where ProjectStatus='Rec' group By ProjectType) C
on S.ProjectType = c.ProjectType
根据我所拥有的状态,以便单独计算它们......
编辑:但是输出是错误的,它为所有不同的项目计算了所有相同的项目类型(比如我有 10 个不同的项目),它显示所有相同的项目 10 次
有没有更好的方法 - 有人可以帮我完成吗?