2011-11-10 109 views
0

在我的query.I選擇這種方式所有工作計數全名。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 
------------------------------------------------------------ 

我有我的事件表列名的狀態,如果狀態碼是5個作業是closed.when我使用GROUP BY條件的StatusCode,那麼表。而根據我不想秀這顯示錶。

--------------------------------- 
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,我把這個錯誤「的所有查詢使用UNION合併,交叉或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

謝謝@古斯塔夫,我不知道如何處理案件。再次感謝。 – engcmreng

+0

當所有其他都失敗時,請嘗試閱讀手冊:) [CASE(Transact-SQL)](http://msdn.microsoft.com/en-us/library/ms181765.aspx) –

+0

:),再次感謝。 – engcmreng