Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
Здравствуйте!
Снова за помощью к вам
Ранее описывала тут https://www.sql.ru/forum/1256539/nekorrektnyy-vyvod-rezultata

Исправила запрос,но Count теперь считает общую сумму,не разбивая по категориям
 SELECT 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],

(SELECT COUNT(*)
 FROM [Group_New_DB].[dbo].[INCIDENTSM1]
WHERE ([OPEN_TIME] >=  @StartDate and [OPEN_TIME] < @EndDate + 1) ) AS OpenedCount,
(SELECT COUNT(*)
 FROM [Group_New_DB].[dbo].[INCIDENTSM1]
WHERE ([CLOSE_TIME] >=  @StartDate and [CLOSE_TIME] < @EndDate + 1) )AS ClosedCount 
 FROM [Group_New_DB].[dbo].[INCIDENTSM1]
GROUP BY CATEGORY
ORDER BY CATEGORY


К сообщению приложен файл. Размер - 8Kb
12 апр 17, 08:17    [20392297]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
aleks2
Guest
Чо за бред?

1. Вставьте свое преобразование в табличку dbo.TranslateTable(Orig, Transl)
'complaint', 'Жалоба'

2. Не суйте группировки в каждую дырку

with t as ( SELECT CATEGORY
                                 ,  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.INCIDENTSM1
                           GROUP BY i1.CATEGORY
                      )
  select CATEGORY = isnull( tr.Transl,, t.CATEGORY ),  OpenedCount,  ClosedCount
     from t left outer join dbo.TranslateTable as tr on tr.Orig = t.CATEGORY
     ORDER BY tr.Transl
12 апр 17, 09:10    [20392403]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2,

у меня нет прав вносить изменения в таблицу.
Можно обойтись без этого,оставив case?
12 апр 17, 09:29    [20392477]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
Попыталась выполнить так

 SELECT 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],
COUNT(CASE WHEN [OPEN_TIME] >=  @StartDate and [OPEN_TIME] < @EndDate + 1 THEN 1 ELSE NULL END) AS OpenedCount, 
COUNT(CASE WHEN [CLOSE_TIME] >=  @StartDate and [CLOSE_TIME] < @EndDate + 1 THEN 1 ELSE NULL END) AS ClosedCount   
FROM [Group_New_DB].[dbo].[INCIDENTSM1] 
GROUP BY CATEGORY 
ORDER BY CATEGORY



Результат снова растянулся

К сообщению приложен файл. Размер - 8Kb
12 апр 17, 09:46    [20392551]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
aleks2
Guest
Marin_1a
Попыталась выполнить так


Результат снова растянулся


Какие грибы кушаете?


SELECT CATEGORY = case [CATEGORY]
                                           when 'complaint' then 'Жалоба'
                                           when 'compliment' then 'Благодарность'
                                           else [CATEGORY] 
                                        end
         ,  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.INCIDENTSM1
    GROUP BY CATEGORY
    ORDER BY CATEGORY
12 апр 17, 10:32    [20392785]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2,

А как собрать результаты в колонки Registered и Closed.
Смысл то потерялся =((

Должно быть 3 колонки :
Категория, Registered и Closed.
12 апр 17, 11:19    [20393089]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2,

вот,что выходит, на каждую категорию новые колонки Registered и Closed

К сообщению приложен файл. Размер - 8Kb
12 апр 17, 11:22    [20393101]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
aleks2
Guest
1. Перестать кушать мухоморы.
2. Запрос
SELECT CATEGORY = case [CATEGORY]
                                           when 'complaint' then 'Жалоба'
                                           when 'compliment' then 'Благодарность'
                                           else [CATEGORY] 
                                        end
         ,  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.INCIDENTSM1
    GROUP BY CATEGORY
    ORDER BY CATEGORY

Выводит именно ТРИ колонки. И ни колонкой более.

3. Все остальное от лукавого приложения/грибов. Медицина тут бессильна.
12 апр 17, 11:43    [20393255]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2,

Ну Вы ведь видите картинку,что я скинула выше.
Там больше 3 колонок...
12 апр 17, 11:48    [20393287]     Ответить | Цитировать Сообщить модератору
 Re: Count выводится общий  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2,

Все)) нашла ошибку....
Спасибо!
Работает =)
12 апр 17, 11:59    [20393351]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить