2017-02-07 11 views
0

次の表があります。部署ごとに完了した保留中のタスクの数を取得する方法

表:部門

ID int 
Name Varchar(50) 

表:タスク

Id int 
ProjectId int, 
TaskName varchar(50) 
Status bit() -- 100 for complete else notComplete 

表:ユーザー

UserId int 
DepId int 
Name varchar(50), 

表:TeamMember

Id int, 
UserId int, 
ProjectId int 

私はちょうど部門ごとに完了した課題と保留中の課題の数を取得したいと思います。ここに私が試したものです:

select sub.Name,sub.result,count(*) 
from (
    select tmm.userid,dp.Name,tm.id,tm.ActivityName,CASE ActualComplete WHEN 100 THEN 'done 100' ELSE 'In Complete' END as result 
    from MasterActivity tm 
    inner join TeamMember_Master tmm on tmm.projectid=tm.projectid 
    inner join Users_Master us on us.UserId=tmm.userid 
    inner join departments dp on us.DepartmentId=dp.id 
) sub 
group by sub.name,sub.result 
+0

こんにちは@dasblinkenlight私は次のクエリを書いていました。 (tmm.userid、dp.Name、tm.id、tm.ActivityName、CASE ActualCompleteを選択した場合)100 THEN '完了100' ELSE '完了' END from MasterActivity tm内部結合TeamMember_Master tmm.projectid = tm.projectid内部結合にUsers_Master us.UserId = tmm.userid 内部結合部dp on us.DepartmentId = dp.id)サブグループby sub.name、sub .result –

+0

これはクエリではるかに良い質問です! – dasblinkenlight

答えて

0

このようにそれを試してみてください:あなたが最小の例を提供しない場合(これは私の頭の上である)これは動作するはず

select dep.ID, dep.Name, sum(case when t.Status = 100 then 1 else 0 end) as Completed_Cnt, 
    sum(case when t.Status <> 100 then 1 else 0 end) as NotCompleted_Cnt 
from Task t 
inner join TeamMember tm on tm.ProjectId = t.ProjectId 
inner join [User] u on u.Id = tm.UserId 
inner join Department dep on dep.Id = u.DepId 
group by dep.Id, dep.Name 

が、サンプルデータと期待される結果、私たちはあなたにもっとお手伝いすることはできません。

ご質問については、articleをお読みください。

+0

ありがとう@mihail stancescu –

+0

あなたが助けてくれたら、[この回答を受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を忘れないようにしてください。回答を受け入れることは寄稿者に報酬を与え、他者が実際の解決策を見つけるのを助けます。 –

関連する問題