t-sql подзапрос и групповой - PullRequest
0 голосов
/ 10 ноября 2011

Под моим запросом. Я выбираю таким образом все задания по полному имени.

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, что задание закрыто. Когда я использовал группировку по условному коду состояния, таблица находится под. И я не хочу показывать эту отображаемую таблицу.

---------------------------------
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
---------------------------------

когда я использую union в моем t-sql, я получаю эту ошибку: «все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках».

как точно решить этот запрос. Любое предложение.

Спасибо.

1 Ответ

2 голосов
/ 10 ноября 2011

Как насчет использования 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...