powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как перестроить запрос с использованием оконных функций?
5 сообщений из 5, страница 1 из 1
Как перестроить запрос с использованием оконных функций?
    #40036104
Здравствуйте!

Упрощенно есть запрос вида:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  CASE WHEN GROUPING(t.C_TP) = 0 THEN t.C_TP ELSE 'Итого' END as ТП
  , CASE WHEN GROUPING(mli.mli_number) = 0 THEN mli.mli_number ELSE 'Итого' END as [Наименование маршрутного листа]
  , SUM(t.tu_cnt) as [Кол-во точек на ТП]
FROM #tp t
JOIN #mli mli ON mli.tp_link = t.LINK
GROUP BY ROLLUP(t.C_TP, mli.mli_number )


, который среди прочих возвращает строки:
Итого Итого 8
ТП1 МЛ1 3
ТП1 МЛ2 3
ТП2 МЛ3 2

Как сделать, чтобы в 3-м столбце в строке итогов 3 учитывалась 1 раз так, как если бы не было дополнительной группировки по столбцу [Наименование маршрутного листа]? Нужно использовать оконные функции?
...
Рейтинг: 0 / 0
Как перестроить запрос с использованием оконных функций?
    #40036108
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

если номер МЛ не имеет значения выбирайте максимальный или минимальный, либо заменяйте его на пустую строку и группируйте по вычисляемому значению.
...
Рейтинг: 0 / 0
Как перестроить запрос с использованием оконных функций?
    #40036115
Владислав Колосов, номера МЛ нужны в детализированных строках. То, что суммируется в 3-м столбце есть характеристика того, что отображается в 1-м(количество точек учета есть характеристика ТП другими словами). Только в супер итогах(когда и в 1-м, и во 2-м столбцах значение Итого) нужно суммировать так, как будто нет группировки по 2-му столбцу
...
Рейтинг: 0 / 0
Как перестроить запрос с использованием оконных функций?
    #40036151
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис Гаркун,

вы хотите пойти против законов природы? Если в наборе данных две тройки, то почему одну из них не надо учитывать?
Делайте без rollup в таком случае. Выбирайте данные и "подвал" через union all запрос, подвал сгруппируйте как требуется.
Для правильной сортировки добавите сортировочный атрибут, для первого запроса значение 0, для второго значение 1, сортируйте по этому атрибуту и другим, каким нужно.
...
Рейтинг: 0 / 0
Как перестроить запрос с использованием оконных функций?
    #40036187
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?? как альтернатива grouping sets может даже в комбинации с coalesce()/isnull()
есть ещё count() (и даже с distinct), можно добавить дополнительные условия фильтрации через having
но без полноценной постановки задачи всё пальцем в небо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как перестроить запрос с использованием оконных функций?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]