4

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

それらをすべて個別にカウントするために私が持っているステータスごとに...

編集:しかし、出力は間違っています。すべての異なるものに対してすべて同じProjectTypeをカウントしました(たとえば、10個の差分のものがあるとします)、すべての同じものを10回以上表示しました

これを行うためのより良い方法はありますか - 誰かが私を完成させるのを手伝ってくれますか?

4

1 に答える 1