SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.04.2017 08:12:35

Marina_A
Участник
Зарегистрирован: 14.03.2017
Сообщений: 19

Не получается разбить по категориям.

Добрый день!
Необходимо чтобы каждая категория показывала сколько задач открыто и закрыто.
Прикрепила файл какой получается результат.


select
OpenedCount
,ClosedCount
,[OPEN_TIME]
,[CLOSE_TIME]
,OP.FULL_NAME as [ASSIGNEE]
,temp.[COMPANY]
,case
when [CATEGORY] = 'complaint' then 'Жалоба'
when [CATEGORY] = 'compliment' then 'Благодарность'
when [CATEGORY] = 'incident' then 'Инцидент'
when [CATEGORY] = 'problem' then 'Проблема'
when [CATEGORY] = 'request for administration' then 'Запрос администрирования'
when [CATEGORY] = 'request for change' then 'Запрос на изменение'
when [CATEGORY] = 'request for information' then 'Запрос информации'
when [CATEGORY] = 'service catalog' then 'Каталог Услуг'
when [CATEGORY] = 'service request' then 'Запрос на обслуживание'
else [CATEGORY] end as [CATEGORY]
from
(

--Обращения, зарегистрированные за отчетный период

select
1 as OpenedCount
,0 as ClosedCount
,[OPEN_TIME]
,[CLOSE_TIME]
,[CATEGORY]
,[COMPANY]
,[ASSIGNEE]
from [dbo].[INCIDENTSM1]
where (OPEN_TIME >=  @StartDate and OPEN_TIME < @EndDate + 1)


union all

--Закрытые обращения за отчетный период

select
0 as OpenedCount
,1 as ClosedCount
,[OPEN_TIME]
,[CLOSE_TIME]
,[CATEGORY]
,[COMPANY]
,[ASSIGNEE]
from [dbo].[INCIDENTSM1]
where [CLOSE_TIME] between @StartDate and @EndDate + 1


) as temp
left join [dbo].[OPERATORM1] as OP
ON temp.[ASSIGNEE] = OP.NAME

Отредактированно Marina_A (10.04.2017 08:34:01)


Прикрепленные файлы:
Attachment Icon Снимок.PNG, Размер: 23,157 байт, Скачано: 287

Неактивен

 

#2 10.04.2017 10:27:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Не получается разбить по категориям.

что значит сколько задач открыто? это не закрытые на данный момент или сколько всего было открыто?
http://sqlinfo.ru/forum/viewtopic.php?pid=44992#p44992

Неактивен

 

#3 10.04.2017 12:18:47

Marina_A
Участник
Зарегистрирован: 14.03.2017
Сообщений: 19

Re: Не получается разбить по категориям.

vasya написал:

что значит сколько задач открыто? это не закрытые на данный момент или сколько всего было открыто?
http://sqlinfo.ru/forum/viewtopic.php?pid=44992#p44992

Открыто - это колонка Обращения зарегистрированные за ОП т.е. колонка 1
Закрыто - это колонка Устранены за отчетный период и Закрыты за ОП колонки 2 и 3 соответственно
Поторопилась,не посмотрела,что там названия разные...

Отредактированно Marina_A (10.04.2017 12:24:07)

Неактивен

 

#4 10.04.2017 21:49:56

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Не получается разбить по категориям.

всё равно не понятно
мне бы в терминах базы: вот есть структура, открыто - это если колонка такая равна тому-то, а другая ещё чему-то, на тестовых данных это будет то-то и т.д.
иными словами:

deadka написал:

Приведите структуру таблицы, тестовые данные и ожидаемый результат,  а то не вполне понятно, как считать.

Неактивен

 

#5 11.04.2017 06:17:01

Marina_A
Участник
Зарегистрирован: 14.03.2017
Сообщений: 19

Re: Не получается разбить по категориям.

vasya написал:

всё равно не понятно
мне бы в терминах базы: вот есть структура, открыто - это если колонка такая равна тому-то, а другая ещё чему-то, на тестовых данных это будет то-то и т.д.
иными словами:

deadka написал:

Приведите структуру таблицы, тестовые данные и ожидаемый результат,  а то не вполне понятно, как считать.

Отчет состоит нескольких категорий запросов : Инцидент, Каталог услуг,Запрос на обслуживание и их времени Регистрации и Закрытия.
Например Каталог услуг был зарегистрирован 05.01.17,а закрыт 10.01.17
Я указываю диапазон допустим на 07.01.17, к этому моменту в колонке зарегистрировано будет 1, а в колонке Закрыто 0, так как он еще не закрыт.

В фильтрах ставим дату ( с какого-то по какое-то...)
Для каждого случая я сделала отдельный подзапрос.

Для Зарегистрированных:

select
1 as OpenedCount
,0 as ClosedCount
,[ASSIGNEE]
,[COMPANY]
,[CATEGORY]
from [dbo].[INCIDENTSM1]
where (OPEN_TIME >=  @StartDate and OPEN_TIME < @EndDate + 1)  
   -


Для закрытых:

select

0 as OpenedCount
,1 as ClosedCount
,[ASSIGNEE]
,[COMPANY]
,[CATEGORY]
from [dbo].[INCIDENTSM1]
where  [CLOSE_TIME] between @StartDate and @EndDate + 1



где OPEN_TIME время открытия, CLOSE_TIME время закрытия
@StartDate (с) - @EndDate (по) - диапазон,который мы сами указываем



Вопрос в том как убрать дублирование колонок.
Причину их повторного появления поняла.
Но как объединить их не могу понять

Отредактированно Marina_A (11.04.2017 07:21:39)


Прикрепленные файлы:
Attachment Icon 1.PNG, Размер: 10,538 байт, Скачано: 292

Неактивен

 

#6 11.04.2017 09:34:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Не получается разбить по категориям.

наверное группировать по категории в каждом подзапросе и объединять их через join, а не union

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson