powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
6 сообщений из 6, страница 1 из 1
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
    #32026279
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда делаю запрос с использованием
group by ... with rollup
а потом сортировку
order by ...
все сгруппированные поля (содержащие null) всплывают наверх.
Как сделать, чтобы они "тонули", то есть чтоб итоги по группировкам находились внизу?
...
Рейтинг: 0 / 0
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
    #32026281
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция GROUPING возвращает признак для промежуточных сумм, что позволит вам вместо NULL подставить такие значения, которые дадут нужный вам порядок сортировки (либо можно сортировать с учетом значения GROUPING)
...
Рейтинг: 0 / 0
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
    #32026285
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой изврат я уже использовал: заменял null при помощи IsNull() на 999999 или 'яяяяяяя'
Но неужели по-нормальному нельзя?
...
Рейтинг: 0 / 0
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
    #32026286
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как вы хотите чтобы сортировались значения NULL ?
В одном SELECT по возрастанию, в другом SELECT по убыванию, причем сервер сам решал это за вас ?

IMHO никаких "извратов" здесь нет


SELECT TOP 100 PERCENT
CASE WHEN GROUPING(a.inv_period) = 1 THEN 'x-- Total --x' ELSE a.inv_period END AS inv_period,
CASE WHEN GROUPING(a.kl) = 1 THEN 'x-- Total in ' +a.inv_period+ ' period --x' ELSE a.kl END AS kl,
....
...
Рейтинг: 0 / 0
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
    #32026291
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, но все-таки это изврат. ибо что мы получим, выполнив в QA
if null>0 print 1
if null<0 print 2
if null=0 print 3
?
ничего. The command(s) completed successfully.
и всё. как же тогда серверу null сортировать????
...
Рейтинг: 0 / 0
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
    #32026294
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте не будем валить в одну кучу СОРТИРОВКУ и СРАВНЕНИЕ полей содержащих NULL.

В первом случае для любого поля независимо от его значения и значений других полей будет сгенерирован ключ, по которому собственно и будет проходить сортировка. Ключ можно сгененрировать и для поля, содержащего NULL.

При сравнении значение NULL приобретает несколько другой смысл (троичная логика, слышали ?), который можно регулировать с помощью установок сервера

set ansi_nulls on
go

if null<>0 print 1
if null=null print 2
if null<>null print 3
if null is null print 4

go

set ansi_nulls off
go

if null<>0 print 11
if null=null print 12
if null<>null print 13
if null is null print 14
go

ЗЫ
Кроме того, а вы не собирались создавать какие-то символьные комментарии к промежуточным суммам ? Или вашим пользователм они не нужны ?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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