Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Есть 6 разных таблиц с одинаковым полем AFFECTED_ITEM
Необходимо вывести колонку AFFECTED_ITEM и Count по каждой таблице
К примеру
AFFECTED_ITEM | Table1 | Table2 | Table3 | Table6 |
--------------------------------------------------------------
Item1 | 53 | 45 | 12 | 0 |
--------------------------------------------------------------
Item2 | 4 | 13 | 77 | 9 |
--------------------------------------------------------------
Item3 | 7 | 0 | 24 | 23 |
Неактивен
Отредактированно klow (17.04.2017 09:01:38)
Неактивен
klow написал:
SELECT
t.AFFECTED_ITEM,
count(t1.AFFECTED_ITEM) Table1,
count(t2.AFFECTED_ITEM) Table2,
...
FROM (
SELECT DISTINCT AFFECTED_ITEM FROM Table1
UNION
SELECT DISTINCT AFFECTED_ITEM FROM Table2
UNION
...
) t
LEFT JOIN Table1 t1 ON t.AFFECTED_ITEM = t1.AFFECTED_ITEM
LEFT JOIN Table2 t2 ON t.AFFECTED_ITEM = t2.AFFECTED_ITEM
...
ORDER BY AFFECTED_ITEM;
Добрый день!
Выдает ошибку Column 't.AFFECTED_ITEM' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
Неактивен
ORDER BY AFFECTED_ITEM;
замените на
GROUP BY t.AFFECTED_ITEM
ORDER BY t.AFFECTED_ITEM;
Неактивен
vasya написал:
ORDER BY AFFECTED_ITEM;
замените на
GROUP BY t.AFFECTED_ITEM
ORDER BY t.AFFECTED_ITEM;
Count все-таки неточный получается.
Отдельно еще запрос сделала
Неактивен
попробуйте так:
Неактивен
vasya написал:
попробуйте так:
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;
Спасибо!Работает супер!
Еще вопрос:
Мне необходимо фильтровать по @Parameters
WHERE OPEN_TIME between @StartDate and @EndDate + 1
and COMPANY in @Company
куда их включать?
Неактивен
предположу, что в подзапросы, но это зависит от того, что именно нужно
пример тестовых данных и желаемый результат сильно упрощают понимание
Неактивен
vasya написал:
предположу, что в подзапросы, но это зависит от того, что именно нужно
пример тестовых данных и желаемый результат сильно упрощают понимание
Результат мой выносит таблицу с колонкой Affected_item, которая хранит Услуги и все остальные колонки с количеством услуг по каждому направлению.Теперь я должна в @Parameters указать диапазон даты,когда эта услуга была подана, в какой компании.
это результат на 5 марта 2017 года
AFFECTED_ITEM | Table1 | Table2 | Table3 | Table6 |
-------------------------------------------------------------------
Item1 | 53 | 45 | 12 | 0 |
-------------------------------------------------- ----------------
Item2 | 4 | 13 | 77 | 9 |
-------------------------------------------------------------------
Item3 | 7 | 0 | 24 | 23 |
А это на 7 апреля 2017
AFFECTED_ITEM | Table1 | Table2 | Table3 | Table6 |
-------------------------------------------------------------------
Item1 | 58 | 46 | 45 | 2 |
-------------------------------------------------- ----------------
Item2 | 4 | 18 | 77 | 19 |
-------------------------------------------------------------------
Item3 | 44 | 22 | 24 | 23 |
Даты будут регулироваться в @Parameters
С - По
Отредактированно Marina_A (17.04.2017 13:18:27)
Неактивен
ещё больше запутали
Неактивен
vasya написал:
ещё больше запутали
Посмотрите мой отредактированный ответ выше
Неактивен
т.е. при подсчете count(AFFECTED_ITEM) нужно считать не все значения которые есть в таблице, а только те, которые относятся к диапазону дат?
тогда доп условие добавляется в подзапросы
..
LEFT JOIN (select AFFECTED_ITEM, count(AFFECTED_ITEM) as Table1 from Table1 where тут доп условия group by AFFECTED_ITEM) as t1 ON t.AFFECTED_ITEM = t1.AFFECTED_ITEM
..
Неактивен
vasya написал:
т.е. при подсчете count(AFFECTED_ITEM) нужно считать не все значения которые есть в таблице, а только те, которые относятся к диапазону дат?
тогда доп условие добавляется в подзапросы
..
LEFT JOIN (select AFFECTED_ITEM, count(AFFECTED_ITEM) as Table1 from Table1 where тут доп условия group by AFFECTED_ITEM) as t1 ON t.AFFECTED_ITEM = t1.AFFECTED_ITEM
..
Спасибо!
Теперь делаю запрос похожий,но уже с 2 колонками,добавила еще одно поле SUBCATEGORY.
Только работает запрос некорректно уже
Можете подсказать,что не так тут
SELECT
t.AFFECTED_ITEM,
t.SUBCATEGORY,
Table1,
Table2,
Table3
FROM (
SELECT DISTINCT AFFECTED_ITEM,SUBCATEGORY FROM [dbo].[CM3RM1]
UNION
SELECT DISTINCT AFFECTED_ITEM,SUBCATEGORY FROM [dbo].[INCIDENTSM1]
UNION
SELECT DISTINCT AFFECTED_ITEM,SUBCATEGORY FROM [dbo].[PROBSUMMARYM1]
) t
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY, count(AFFECTED_ITEM) as Table1 from [dbo].[CM3RM1] WHERE SUBCATEGORY IS NOT NULL group by AFFECTED_ITEM,SUBCATEGORY ) as t1 ON t.AFFECTED_ITEM = t1.AFFECTED_ITEM
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY,count(AFFECTED_ITEM) as Table2 from [dbo].[INCIDENTSM1] WHERE SUBCATEGORY IS NOT NULL group by AFFECTED_ITEM,SUBCATEGORY) as t2 ON t.AFFECTED_ITEM = t2.AFFECTED_ITEM
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY,count(AFFECTED_ITEM) as Table3 from [dbo].[PROBSUMMARYM1] WHERE SUBCATEGORY IS NOT NULL group by AFFECTED_ITEM,SUBCATEGORY) as t3 ON t.AFFECTED_ITEM = t3.AFFECTED_ITEM
ORDER BY t.AFFECTED_ITEM
Отредактированно Marina_A (18.04.2017 09:22:38)
Неактивен
сделайте тестовый пример на http://sqlfiddle.com/
Неактивен
vasya написал:
сделайте тестовый пример на http://sqlfiddle.com/
Здравствуйте!
Попробовала,получилось.
Только немного иначе. Он выносит все результаты,не группируя.
А нужна все таки группировка.где бы подсчет общий был по Услуге и субкатегории
Результат показан во вложении.
Спасибо!
SELECT
t.AFFECTED_ITEM,
t.SUBCATEGORY
Table1,
Table2,
Table3,
Table4,
Table5,
Table6
FROM (
SELECT DISTINCT AFFECTED_ITEM, SUBCATEGORY FROM [dbo].[CM3RM1]
UNION
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]
UNION
SELECT DISTINCT AFFECTED_ITEM, SUBCATEGORY FROM [dbo].[ROOTCAUSEM1]
UNION
SELECT DISTINCT AFFECTED_ITEM, SUBCATEGORY FROM [dbo].[INCIDENTSM1]
) t
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY, count(*) as Table1 from [dbo].[CM3RM1] group by AFFECTED_ITEM, SUBCATEGORY) as t1 ON t.AFFECTED_ITEM = t1.AFFECTED_ITEM
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
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
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
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY, count(*) as Table5 from [dbo].[ROOTCAUSEM1] group by AFFECTED_ITEM, SUBCATEGORY) as t5 ON t.AFFECTED_ITEM = t5.AFFECTED_ITEM
LEFT JOIN (select AFFECTED_ITEM, SUBCATEGORY, count(*) as Table6 from [dbo].[INCIDENTSM1] WHERE category = 'service catalog' group by AFFECTED_ITEM, SUBCATEGORY) as t6 ON t.AFFECTED_ITEM = t6.AFFECTED_ITEM
WHERE t.AFFECTED_ITEM IS NOT NULL AND t.SUBCATEGORY IS NOT NULL
ORDER BY t.AFFECTED_ITEM, T.SUBCATEGORY
Отредактированно Marina_A (19.04.2017 06:01:58)
Неактивен
а где пример тестовых данных?
т.е.
create table t1 ..
insert into t1 ..
create table t2 ..
insert into t2 ..
Неактивен