Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Сортировка результата, немогу придумать как. (число прочтений - 2945 )
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Сортировка результата, немогу придумать как.
30. Октября 2006 :: 09:12
Печать  
Есть штатный запрос:

Код
Выбрать все
Клиент		= Регистр.Обороты.Клиент;
ТМЦ		= Регистр.Обороты.ТМЦ;
Менеджер	= Регистр.Обороты.Менеджер;

ПриходКво	= Регистр.Обороты.ПриходКво;
ПриходВал	= Регистр.Обороты.ПриходОсн;
РасходКво	= Регистр.Обороты.РасходКво;
РасходВал	= Регистр.Обороты.РасходОсн;
ДоходВал	= Регистр.Обороты.ДоходОсн;

Функция ПрхКво = Сумма(ПриходКво);
Функция ПрхВал = Сумма(ПриходВал*(5/6));
Функция РсхКво = Сумма(РасходКво);
Функция РсхВал = Сумма(РасходВал*(5/6));
Функция ДохВал = Сумма(ДоходВал);

Группировка Клиент упорядочить по ПрхВал;
Группировка ТМЦ упорядочить по ПрхВал;
Группировка Менеджер упорядочить по ПрхВал; 



Как в SQL можно реализовать это "упорядочить по" в групировках?
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Сортировка результата, немогу придумать как.
Ответ #1 - 30. Октября 2006 :: 09:33
Печать  
А order by чем не устраивает?
  
Наверх
 
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сортировка результата, немогу придумать как.
Ответ #2 - 30. Октября 2006 :: 12:11
Печать  
Цитата:
А order by чем не устраивает?


Необходимо, получить результат схожий на то что возвращает штаный запрос, а как в SQL такое получить.
Вот пример, то что возвращает SQL если без сортировки по числовым колонкам:

Кол1  Кол2   Кол3   Кол4
____________________
NULL   NULL   NULL   150
Зн11   NULL   NULL   100
Зн11   Зн12   NULL   100
Зн11   Зн12   Зн13   100

Зн21   NULL   NULL   50
Зн21   Зн22   NULL   50
Зн22   Зн22   Зн23   50

А если необходимо отсортировать по убыванию колонки - Кол4, как?
  
Наверх
ICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сортировка результата, немогу придумать как.
Ответ #3 - 30. Октября 2006 :: 12:24
Печать  
Суть проблемы заключается в том, что используется With ROLLUP и он соответсвенно выводит NULL вначале если делать сортировку измерениям. Если же делать сортировку по ресурсу (SUM), то используется GROUPPING(Группировка). Если группирвка одна - то все очень просто, а елси их скажем 3, тогда строка сортировки должна быть примерно такой
Groupping(Клиент)+Сумма+Groupping(Заказ)+Сумма+Groupping(Фидиал)+Сумма.
Вот в єтом и есть вопрос. Надо найти такое решение, которое будет работать как стандарнтая сортировка запроса в (0).
  
Наверх
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сортировка результата, немогу придумать как.
Ответ #4 - 30. Октября 2006 :: 14:56
Печать  
pvase писал(а) 30. Октября 2006 :: 12:24:
Суть проблемы заключается в том, что используется With ROLLUP и он соответсвенно выводит NULL вначале если делать сортировку измерениям. Если же делать сортировку по ресурсу (SUM), то используется GROUPPING(Группировка). Если группирвка одна - то все очень просто, а елси их скажем 3, тогда строка сортировки должна быть примерно такой
Groupping(Клиент)+Сумма+Groupping(Заказ)+Сумма+Groupping(Фидиал)+Сумма.
Вот в єтом и есть вопрос. Надо найти такое решение, которое будет работать как стандарнтая сортировка запроса в (0).


Типа того, как?
  
Наверх
ICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сортировка результата, немогу придумать как.
Ответ #5 - 31. Октября 2006 :: 08:42
Печать  
Примерно так:
Код
Выбрать все
-- по возростанию
CAST(1-GROUPING(Клиент) AS Char(1))+MAX(RTRIM(НаимКлиент))+CAST(1-GROUPING(ТМЦ) AS Char(1))+MAX(RTRIM(НаимТМЦ))+CAST(1-GROUPING(Менеджер) AS Char(1))+MAX(RTRIM(Менеджер)) AS Гр,
-- по убыванию
CAST(GROUPING(Клиент) AS Char(1))+MAX(RTRIM(НаимКлиент))+CAST(GROUPING(ТМЦ) AS Char(1))+MAX(RTRIM(НаимТМЦ))+CAST(GROUPING(Менеджер) AS Char(1))+MAX(RTRIM(Менеджер)) AS Гр,
 


Соответственно по этому полю делать
ORDER BY Гр -- по возростанию
ORDER BY Гр DESC-- по убыванию.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать