Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
j-ester Member Откуда: Опорный край державы Сообщений: 34 |
Добрый день, подскажите: Имеется запрос который выводит каталог объектов с группировкой,
Дело в том, что в каталоге и НУЖНО выводить две строки, так как у них разные даты (третий столбец), НО вот выделенные жирным две последние строки выводят запасы на объекте, а так 4как объект ОДИН (одинаковый код), то нужно чтоб было ДВЕ строки, но запасы заполнялись только В ОДНОЙ ИЗ НИХ - в любой. Сумма чтоб в итоге сходилась. Как хочу получить результат:
То есть в зависимости, выведен ли код, выводить для одного кода добычу только один раз. Прошу помощи, совсем не представляю как такое сделать. MS SQL EXPRESS 2008 R2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 апр 18, 10:47 [21325483] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
программирование по картинке? пронумеровать строки в группе, через case выводит значения только для "первой" строки группы. |
10 апр 18, 11:03 [21325562] Ответить | Цитировать Сообщить модератору |
j-ester Member Откуда: Опорный край державы Сообщений: 34 |
Дедушка, А можно чуть подробнее? И что значит по картинке - если нужен код запроса, то пожалуйста:
Я так понял нужно использовать через вложенный запрос с ROW NUMBER ?? |
|
10 апр 18, 11:09 [21325607] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 940 |
правильноCASE WHEN 1 = ROW_NUMBER() OVER ( PARTITION BY <список полей, для которых "0.0488075" должно выводиться один раз"> ORDER BY <дата, номер по порядку или "1/0"> ) THEN <"0.0488075"> END |
10 апр 18, 11:32 [21325714] Ответить | Цитировать Сообщить модератору |
j-ester Member Откуда: Опорный край державы Сообщений: 34 |
Руслан Дамирович, Спасибо! Сделал одно поломал другое. Раньше выводилось через AVG(Добыча) - две строчки Сейчас да - выводиться один раз, но стал соединять ДВЕ записи пустые + ДВЕ записи одна с Добычей другая ПУСТО. Если не сложно не подскажете как объединить case ROW_NUMBER с joim и GROUP BY ??
CASE WHEN 1 = ROW_NUMBER() OVER ( PARTITION BY VZ_dob_god.Dob ORDER BY VZ_dob_god.Dob ) THEN VZ_dob_god.Dob END, Не могу понять как с ним CASE-ом сгруппировать данные При этом имеется GROUP BY VZ_dob_god.Dob для всего запроса. |
|||||||||||||||||||||
10 апр 18, 12:05 [21325895] Ответить | Цитировать Сообщить модератору |
j-ester Member Откуда: Опорный край державы Сообщений: 34 |
Руслан Дамирович, Простите, заработался , глаз замылился. Все получилось, всем огромное спасибо за помощь и полученный опыт. |
10 апр 18, 13:41 [21326434] Ответить | Цитировать Сообщить модератору |
j-ester Member Откуда: Опорный край державы Сообщений: 34 |
Прошу помощи - теперь если столбец который надо выводить один раз совпадает со столбцом из другого объекта - то выводится только один из них.... Можно ли сделать уникально внутри одного объекта по коду ?? |
11 апр 18, 17:13 [21330581] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |