Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Борис Гаркун Member Откуда: Лермонтов Сообщений: 250 |
Здравствуйте! Упрощенно есть запрос вида: 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 раз так, как если бы не было дополнительной группировки по столбцу [Наименование маршрутного листа]? Нужно использовать оконные функции? |
15 янв 21, 14:21 [22263920] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8346 |
Борис Гаркун, если номер МЛ не имеет значения выбирайте максимальный или минимальный, либо заменяйте его на пустую строку и группируйте по вычисляемому значению. |
15 янв 21, 14:28 [22263924] Ответить | Цитировать Сообщить модератору |
Борис Гаркун Member Откуда: Лермонтов Сообщений: 250 |
Владислав Колосов, номера МЛ нужны в детализированных строках. То, что суммируется в 3-м столбце есть характеристика того, что отображается в 1-м(количество точек учета есть характеристика ТП другими словами). Только в супер итогах(когда и в 1-м, и во 2-м столбцах значение Итого) нужно суммировать так, как будто нет группировки по 2-му столбцу |
15 янв 21, 14:37 [22263933] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8346 |
Борис Гаркун, вы хотите пойти против законов природы? Если в наборе данных две тройки, то почему одну из них не надо учитывать? Делайте без rollup в таком случае. Выбирайте данные и "подвал" через union all запрос, подвал сгруппируйте как требуется. Для правильной сортировки добавите сортировочный атрибут, для первого запроса значение 0, для второго значение 1, сортируйте по этому атрибуту и другим, каким нужно. |
15 янв 21, 16:21 [22263996] Ответить | Цитировать Сообщить модератору |
vikkiv Member Откуда: EU Сообщений: 2920 |
?? как альтернатива grouping sets может даже в комбинации с coalesce()/isnull() есть ещё count() (и даже с distinct), можно добавить дополнительные условия фильтрации через having но без полноценной постановки задачи всё пальцем в небо Сообщение было отредактировано: 15 янв 21, 16:48 |
15 янв 21, 16:50 [22264045] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |