Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу? / 6 сообщений из 6, страница 1 из 1
27.03.2002, 08:29
    #32026279
boogier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
Когда делаю запрос с использованием
group by ... with rollup
а потом сортировку
order by ...
все сгруппированные поля (содержащие null) всплывают наверх.
Как сделать, чтобы они "тонули", то есть чтоб итоги по группировкам находились внизу?
...
Рейтинг: 0 / 0
27.03.2002, 08:57
    #32026281
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
Функция GROUPING возвращает признак для промежуточных сумм, что позволит вам вместо NULL подставить такие значения, которые дадут нужный вам порядок сортировки (либо можно сортировать с учетом значения GROUPING)
...
Рейтинг: 0 / 0
27.03.2002, 09:03
    #32026285
boogier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
такой изврат я уже использовал: заменял null при помощи IsNull() на 999999 или 'яяяяяяя'
Но неужели по-нормальному нельзя?
...
Рейтинг: 0 / 0
27.03.2002, 09:17
    #32026286
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
А как вы хотите чтобы сортировались значения 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
27.03.2002, 09:35
    #32026291
boogier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
спасибо, но все-таки это изврат. ибо что мы получим, выполнив в QA
if null>0 print 1
if null<0 print 2
if null=0 print 3
?
ничего. The command(s) completed successfully.
и всё. как же тогда серверу null сортировать????
...
Рейтинг: 0 / 0
27.03.2002, 09:54
    #32026294
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу?
Давайте не будем валить в одну кучу СОРТИРОВКУ и СРАВНЕНИЕ полей содержащих 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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Group by + Order by : как сделать, чтобы итоги по группировкам находились внизу? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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