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

Откуда:
Сообщений: 125
Добрый день!
Отчет выдает пустые колонки.
Попыталась убрать с помошью HAVING
Появились ошибки
"Incorrect syntax near the keyword 'LEFT'(Line 22)
"Incorrect syntax near the keyword 'as'(Line 25)
"Incorrect syntax near the keyword 'as'(Line 30)


SELECT
t.AFFECTED_ITEM,
t.SUBCATEGORY,
Table2,
Table3,
Table4

FROM (

SELECT DISTINCT AFFECTED_ITEM, SUBCATEGORY FROM [dbo].[INCIDENTSM1]
UNION
SELECT DISTINCT AFFECTED_ITEM, SUBCATEGORY FROM [dbo].[PROBSUMMARYM1]
UNION
SELECT DISTINCT AFFECTED_ITEM, SUBCATEGORY FROM [dbo].[REQUESTM1]
) t
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY, count(*) as Table2 from [dbo].[INCIDENTSM1]
group by AFFECTED_ITEM, SUBCATEGORY) as t2 ON t.AFFECTED_ITEM = t2.AFFECTED_ITEM AND t.SUBCATEGORY = t2.SUBCATEGORY
HAVING COUNT(AFFECTED_ITEM) > 0
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY,count(*) as Table3 from [dbo].[PROBSUMMARYM1]
group by AFFECTED_ITEM, SUBCATEGORY) as t3 ON t.AFFECTED_ITEM = t3.AFFECTED_ITEM AND t.SUBCATEGORY = t3.SUBCATEGORY
HAVING COUNT(AFFECTED_ITEM) > 0
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY,count(*) as Table4 from [dbo].[REQUESTM1]
group by AFFECTED_ITEM, SUBCATEGORY) as t4 ON t.AFFECTED_ITEM = t4.AFFECTED_ITEM AND t.SUBCATEGORY = t4.SUBCATEGORY
HAVING COUNT(AFFECTED_ITEM) > 0

WHERE t.AFFECTED_ITEM IS NOT NULL AND t.SUBCATEGORY IS NOT NULL
ORDER BY t.AFFECTED_ITEM, t.SUBCATEGORY
26 апр 17, 09:37    [20434635]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Marin_1a,

выглядит, так будто вы наугад писали
26 апр 17, 09:39    [20434639]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4182
...

LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY,count(*) as Table4 from [dbo].[REQUESTM1] 
group by AFFECTED_ITEM, SUBCATEGORY) as t4 

ON t.AFFECTED_ITEM = t4.AFFECTED_ITEM AND t.SUBCATEGORY = t4.SUBCATEGORY

HAVING COUNT(AFFECTED_ITEM) > 0

Почему же у вас HAVING то снаружи???

Может быть лучше так
...

LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY,count(*) as Table4 from [dbo].[REQUESTM1] 
group by AFFECTED_ITEM, SUBCATEGORY HAVING COUNT(AFFECTED_ITEM) > 0) as t4 

ON t.AFFECTED_ITEM = t4.AFFECTED_ITEM AND t.SUBCATEGORY = t4.SUBCATEGORY
26 апр 17, 10:00    [20434712]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4182
Вообще какой-то бред!
"Вас кто надоумил написать роман на такую странную тему такой запрос?"
Напишите чего хочется получить в итоге.
26 апр 17, 10:06    [20434745]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
SQL2008,

ну sql же декларативный язык... вот и пишем "свет мой зеркальце скажи и тд" :)
26 апр 17, 10:08    [20434757]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

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

результат не изменился

К сообщению приложен файл. Размер - 16Kb
26 апр 17, 12:15    [20435350]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

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

Нужно вывести Услугу, Категорию и кол-во услуг по каждому из 3 направлений: Инцидент,Обращение,ЗО
26 апр 17, 12:17    [20435363]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1357
Marin_1a,

этож обычный pivot

declare @t1 table (affected_item varchar(255), subcategory varchar(255), id int)
declare @t2 table (affected_item varchar(255), subcategory varchar(255), id int)
declare @t3 table (affected_item varchar(255), subcategory varchar(255), id int)

insert into @t1 values ('AOK1', 'access', 1), ('AOK2', 'remove access', 2), ('AOK3', 'access', 3), ('AOK5', 'remove access', 4),('AOK2', 'other', 49), ('AOK3', 'other', 50)
insert into @t2 values ('AOK50', 'access', 1)
insert into @t3 values ('AOK1', 'access', 10), ('AOK2', 'remove access', 11), ('AOK3', 'other', 21), ('AOK3', 'other', 22), ('AOK5', 'remove access', 44)

;with x ([type], [affected_item], [subcategory]) as (
     select '1', [affected_item], [subcategory] from @t1
     union all
     select '2', [affected_item], [subcategory] from @t2
     union all
     select '3', [affected_item], [subcategory] from @t3
)
select
      pvt.[affected_item] as [Услуга], pvt.[subcategory] as [категория 2], [1] as [Обращение], [2] as [Инцидент], [3] as [ЗО]
from x as src
pivot (
 count([type]) for [type] IN ([1], [2], [3])
) as pvt
26 апр 17, 12:38    [20435472]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
o-o
Guest
да у ней же репорт билдер, которому не надо пивоты писать,
он их сам прекрасно делает, если не скармливать ему бурду
26 апр 17, 12:41    [20435500]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1357
o-o,

ну ТС не упомянула в теме что RS использует, тогда вообще решается в пару строк. выбираем нужное и крутим вертим :)
26 апр 17, 12:44    [20435524]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

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

подскажите пожалуйста как обойтись без pivot-a
26 апр 17, 12:46    [20435530]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

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

Извините,забыла упомянуть,тогда как можно будет это сделать? я с sql-ем меньше месяца работаю,не очень понимаю
26 апр 17, 12:52    [20435555]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
o-o
Guest
а что чему соответствует в запросе и в отчете?
и зачем там distinct?
вроде сложить в tablix AFFECTED_ITEM по строкам, SUBCATEGORY по колонкам,
в детали...ну есть у вас там количество или ничего нет?
если 1 строка = кол-во 1, то просто 1, если есть кол-во, то его
в качестве агрегата sum()
если это из 3х таблиц одной структуры, то их все 3 в union all
----
надо ж какой-то минимум в хэлпе прочесть с примерами
26 апр 17, 12:59    [20435590]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
o-o
Guest
...или инцидент и прочее это НЕ категории?
короче, то, где эти инциденты и остальное, вот то по колонкам.
а категории тогда тоже по строкам, как и услуги.
26 апр 17, 13:02    [20435613]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

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

нет,у каждой услуги существует несколько категорий.
А сама услуга может быть как в инциденте,так и во всех остальных типах
26 апр 17, 13:04    [20435626]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
o-o
Guest
вы видите свой конечный результат?
вы знаете, что чему соответствует?
все, что от вас требуется, это запихнуть ту колонку, где инциденты и прочее, в столбцы,
остальное в строки,
а в пересечение сложить колонку с числом.
если нет такой колонки, т.к. строка = 1, то сложить 1.
26 апр 17, 13:09    [20435664]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
o-o
вы видите свой конечный результат?
вы знаете, что чему соответствует?
все, что от вас требуется, это запихнуть ту колонку, где инциденты и прочее, в столбцы,
остальное в строки,
а в пересечение сложить колонку с числом.
если нет такой колонки, т.к. строка = 1, то сложить 1.




Существует 3 таблицы : Инциденты, Обращения,Запросы
Каждый из них хранят список услуг и категорию,к которой эта услуга относится.
В отчете нужно вынести услуги и категории по ним, а в колонках Инциденты, Обращения,Запросы количество этой услуги.
Например Услуга1 была в Инцидентах 5 раз подана, в Обращениях 2 раза, а в Запросах ни разу.
а в том случае,когда услуга ни разу не была подана нигде, не выводить пустые колонки
26 апр 17, 13:21    [20435747]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
o-o
Guest
сделать union all 3-х таблиц,
в 1-ую колонку при выборке из каждой сложить константу:
select 'Инцидент' as col, .... from t1
union all
select 'Обращениe',...from t2
...
и вот эту колонку col сложить в столбцы
26 апр 17, 13:27    [20435785]     Ответить | Цитировать Сообщить модератору
 Re: Пустые значения в Count  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
o-o
сделать union all 3-х таблиц,
в 1-ую колонку при выборке из каждой сложить константу:
select 'Инцидент' as col, .... from t1
union all
select 'Обращениe',...from t2
...
и вот эту колонку col сложить в столбцы


круто!спасибо
26 апр 17, 14:28    [20436153]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить