Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
brick08 Member Откуда: Сообщений: 67 |
Всем доброго времени суток! Чего то не соображу. Например, есть 2 таблицы. В одной таблица кодов продуктов со значениями и кодами групп, а в другой код группы и продукты. Нужно вывести сумму значений первой таблицы и добавить недостающие ид продуктов из второй со значением 0. Набросал примерный запрос, но он неправильно выбирает:
а нужно
З.Ы. Microsoft SQL Server 2008 R2 |
||||||||||||||||||||||||||||||||||||||||||
24 май 16, 07:57 [19210124] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
Ну и где SUM? а соответственно и GROUP BY? |
||
24 май 16, 08:47 [19210253] Ответить | Цитировать Сообщить модератору |
CrazHunt Member Откуда: Сообщений: 40 |
SELECT COALESCE(T1.idgroup1,t2.idgroup1) AS idgroup1, COALESCE(T1.idgroup2,t2.idgroup2) AS idgroup2, COALESCE(T1.idproduct,t2.idproduct) AS idproduct, COALESCE(T1.Value,0) AS Value FROM ( SELECT T.idgroup1 , T.idgroup2 , T.idproduct , SUM(T.value) AS Value FROM #t1 T GROUP BY T.idgroup1 , T.idgroup2 , T.idproduct ) T1 FULL JOIN ( SELECT distinct T4.idgroup1 , T4.idgroup2 , T3.idproduct FROM #t2 T3 JOIN #t1 T4 ON T4.idgroup2 = T3.idgroup2 ) T2 ON T2.idproduct = T1.idproduct AND T2.idgroup2 = T1.idgroup2 |
24 май 16, 08:59 [19210292] Ответить | Цитировать Сообщить модератору |
brick08 Member Откуда: Сообщений: 67 |
Даже не знаю что вам ответить. В приведенном мной запросе есть и SUM и GROUP BY. CrazHunt, спасибо. Хорошее решение без UNION. |
||
24 май 16, 09:37 [19210425] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
brick08 1) Насколько верно утверждение, что в первой таблице одному значению idgroup2 соответствует строго одно значение idgroup1? А наоборот? 2) Вы пишете, что нужно
Однако в эталонном ответе первые три записи (где idgroup2 = 6 и idproduct IN 1,2,3) НЕ добавляете. Почему? |
||
24 май 16, 10:03 [19210553] Ответить | Цитировать Сообщить модератору |
brick08 Member Откуда: Сообщений: 67 |
1) Одному значению idgroup1 соответствует строго одно значение idgroup2. Обратное не верно. 2) Из второй таблицы нужно добавлять только те idgroup2, которые содержатся в первой таблице. |
||||
24 май 16, 11:53 [19211327] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |