2011-11-10 13 views
0

私のクエリの下。この方法では、すべてのジョブがフルネームでカウントされます。t-sqlサブクエリとgroupby

SELECT COUNT(sy.FullName)      [Count Job], 
     sy.FullName        [FullName], 
     MIN(CAST(i.vrp_notificationdate AS DATE)) [Oldest Date] 
FROM BusinessUnit AS b 
     INNER JOIN SystemUser AS sy 
     ON b.BusinessUnitId = sy.BusinessUnitId 
     INNER JOIN Incident AS i 
     ON i.OwnerId = sy.SystemUserId 
GROUP BY f.sy.FullName 

このクエリショーこのテーブル

--------------------------------- 
Count Job FullName Oldest Date 
    10   a  2011-10-11 
    20   B  2011-10-11 
    55   C  2011-10-11 
--------------------------------- 

しかし、私は、例えば、テーブルの下にしたいです。

-------------------------------------------------------------- 
Count Job FullName Oldest Date  Open Job   Close Job 
    10   A  2011-10-11   5    5 
    20   B  2011-10-11   13    7 
    55   C  2011-10-11   48    7 
------------------------------------------------------------ 

ステータスコードは、ジョブがclosed.when iの条件からstatusCodeでグループを使用され、その後、テーブルは私がショーをしたいいけない.AND下にあること5である場合、私は、私のインシデント表にColumnNameにステータスを持っていますこれはテーブルを示しています。

--------------------------------- 
Count Job FullName Oldest Date 
    10   a  2011-10-11 
    13   B  2011-10-11 
    48   C  2011-10-11 
    7   B  2011-10-11 
    7   C  2011-10-11 
--------------------------------- 

私は私のT-SQLに労働組合を使用するとき、私は「UNION、INTERSECTまたはEXCEPT演算子を使って結合されたすべてのクエリは、彼らのターゲットリスト内の式の数と同じ数を持っていなければなりません。」このエラーを取ります

どのように正確にこのクエリを解決する。任意の提案。

ありがとうございました。

+1

クエリの書式設定が修正されましたが、無効です。 2つの 'GROUP BY'節があります。 –

+0

ありがとう、私は再び私のクエリを編集します。 – engcmreng

答えて

2

CASEとSUMの使用はどうですか?

SELECT COUNT(sy.FullName)      [Count Job], 
     sy.FullName        [FullName], 
     MIN(CAST(i.vrp_notificationdate AS DATE)) [Oldest Date], 

     SUM(CASE i.status 
      WHEN 5 THEN 1 
      ELSE 0)        [Open Jobs], 

     SUM(CASE i.status 
      WHEN 5 THEN 0 
      ELSE 1)        [Closed Jobs] 

FROM BusinessUnit AS b 
     INNER JOIN SystemUser AS sy 
     ON b.BusinessUnitId = sy.BusinessUnitId 
     INNER JOIN Incident AS i 
     ON i.OwnerId = sy.SystemUserId 
GROUP BY f.sy.FullName 
+0

ありがとう@ Gustav、私はケースwhen.Againありがとうを扱う方法を知りませんでした。 – engcmreng

+0

他のすべてが失敗した場合は、マニュアル[CASE(Transact-SQL)](http://msdn.microsoft.com/en-us/library/ms181765.aspx) –

+0

:)をもう一度お試しください。 – engcmreng