Задавайте вопросы, мы ответим
Вы не зашли.
Существует 4 таблицы:
INCIDENTS, REQUEST, CHANGE, PROBLEM
Из каждой необходимо вынести Группу и сколько было открыто и закрыто задач этой группой.
Колонка Группа в каждой таблице называется по-разному, к примеру:
в таблице INCIDENTS:
SELECT ASSIGNMENT
, OpenedCount = sum( iif( OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
, ClosedCount = sum( iif( CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
FROM [dbo].[INCIDENTS]
GROUP BY ASSIGNMENT
ORDER BY ASSIGNMENT
в таблице CHANGE:
SELECT ASSIGN_DEPT
, OpenedCount = sum( iif( OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
, ClosedCount = sum( iif( CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
FROM [dbo].[CHANGE]
GROUP BY ASSIGN_DEPT
ORDER BY ASSIGN_DEPT
в таблице PROBLEM:
SELECT ASSIGN
, OpenedCount = sum( iif( OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
, ClosedCount = sum( iif( CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
FROM [dbo].[PROBLEM]
GROUP BY ASSIGN
ORDER BY ASSIGN
в таблице REQUEST:
SELECT ASSIGNM
, OpenedCount = sum( iif( OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
, ClosedCount = sum( iif( CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1, 0 ) )
FROM [dbo].[REQUEST]
GROUP BY ASSIGNM
ORDER BY ASSIGNM
Результат должен выглядеть так:
Группа | INCIDENTS | CHANGE | REQUEST | PROBLEM |
----------------------------------------------------------------------------------------------------------------------------
| Открыто | Закрыто | Открыто | Закрыто | Открыто | Закрыто | Открыто | Закрыто |
--------------------------------------------------------------------------------------------------------------------------------------------
1Группа | 334 | 76 | 12 | 0 | 334 | 76 | 12 | 0 |
---------------------------------------------------------------------------------------------------------------------------------------------
2Группа | 23 | 4 | 67 | 9 | 23 | 2 | 45 | 9 |
---------------------------------------------------------------------------------------------------------------------------------------------
3Группа | 124 | 7 | 44 | 5 | 124 | 111 | 4 | 1 |
----------------------------------------------------------------------------------------------------------------------------------------------
Вчера мне помогли с запросом,где 6 разных таблиц колонку с одинаковым названием,там попроще решается:
SELECT
t.AFFECTED_ITEM,
Table1,
Table2,
...
FROM (
SELECT DISTINCT AFFECTED_ITEM FROM Table1
UNION
SELECT DISTINCT AFFECTED_ITEM FROM Table2
UNION
...
) t
LEFT JOIN (select AFFECTED_ITEM, count(AFFECTED_ITEM) as Table1 from Table1 group by AFFECTED_ITEM) as t1 ON t.AFFECTED_ITEM = t1.AFFECTED_ITEM
LEFT JOIN (select AFFECTED_ITEM, count(AFFECTED_ITEM) as Table2 from Table2 group by AFFECTED_ITEM) as t2 ON t.AFFECTED_ITEM = t2.AFFECTED_ITEM
...
ORDER BY t.AFFECTED_ITEM;
Отредактированно Marina_A (18.04.2017 08:02:49)
Неактивен
что-то в стиле:
SELECT
t.AFFECTED_ITEM,
Table1,
Table2,
...
FROM (
SELECT DISTINCT ASSIGNMENT FROM Table1
UNION
SELECT DISTINCT ASSIGN_DEPT FROM Table2
UNION
...
) t
LEFT JOIN (select ASSIGNMENT, count(ASSIGNMENT) as Table1 from INCIDENTS group by ASSIGNMENT) as t1 ON t.AFFECTED_ITEM = t1.ASSIGNMENT
LEFT JOIN (select ASSIGN_DEPT, count(ASSIGN_DEPT) as Table2 from CHANGE group by ASSIGN_DEPT) as t2 ON t.AFFECTED_ITEM = t2.ASSIGN_DEPT
...
Неактивен
vasya написал:
что-то в стиле:
SELECT
t.AFFECTED_ITEM,
Table1,
Table2,
...
FROM (
SELECT DISTINCT ASSIGNMENT FROM Table1
UNION
SELECT DISTINCT ASSIGN_DEPT FROM Table2
UNION
...
) t
LEFT JOIN (select ASSIGNMENT, count(ASSIGNMENT) as Table1 from INCIDENTS group by ASSIGNMENT) as t1 ON t.AFFECTED_ITEM = t1.ASSIGNMENT
LEFT JOIN (select ASSIGN_DEPT, count(ASSIGN_DEPT) as Table2 from CHANGE group by ASSIGN_DEPT) as t2 ON t.AFFECTED_ITEM = t2.ASSIGN_DEPT
...
Сделала по этому принципу
SELECT
t.AFFECTED_ITEM,
Table1,
Table2,
...
FROM (
SELECT DISTINCT ASSIGNMENT FROM Table1
UNION
SELECT DISTINCT ASSIGN_DEPT FROM Table2
UNION
...
) t
LEFT JOIN (select ASSIGNMENT,
OpenedCount = sum(iif(OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1,0 )) as Table 1,
ClosedCount = sum(iif(CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1,0 )) as Table 2
from INCIDENTS group by ASSIGNMENT) as t1 ON t.AFFECTED_ITEM = t1.ASSIGNMENT
LEFT JOIN (select ASSIGN_DEPT,
OpenedCount = sum(iif(OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1,0 )) as Table 1,
ClosedCount = sum(iif(CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1,0 )) as Table 2
from CHANGE group by ASSIGN_DEPT) as t2 ON t.AFFECTED_ITEM = t2.ASSIGN_DEPT
ORDER BY t.ASSIGN_DEPT
Но тут ошибка выходит
Отредактированно Marina_A (18.04.2017 12:01:52)
Неактивен
Но тут ошибка выходит
Вы предлагает нам гадать об ошибке? Обычно таким пользователям я говорю, что все экстрасенсы в отпуске, подождем когда выйдут.
Судя по всему, проблема в странной конструкции
OpenedCount = sum(...) as Table 1
Пробуйте так
Отредактированно klow (18.04.2017 12:26:00)
Неактивен
klow написал:
Но тут ошибка выходит
Вы предлагает нам гадать об ошибке? Обычно таким пользователям я говорю, что все экстрасенсы в отпуске, подождем когда выйдут.
Судя по всему, проблема в странной конструкцииOpenedCount = sum(...) as Table 1
Пробуйте так
sum(iif(OPEN_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1,0 )) as OpenedCount,
sum(iif(CLOSE_TIME >= @StartDate and OPEN_TIME < @EndDate + 1, 1,0 )) as ClosedCount
круто! получилось :-)
Неактивен
Это хорошо, но постарайтесь в следующий раз приводить текст самой ошибки. Так будет проще оказать Вам помощь.
Неактивен