Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL2000, ORDER BY / 3 сообщений из 3, страница 1 из 1
12.07.2002, 01:20:28
    #32036384
Святослав
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL2000, ORDER BY
Драсти!
Тут такой вопрос: нужно сортировать данные в SELECT-запросе в зависимости от значения N переменных.
т.е.: IF @A = 1 AND @B = 1 AND @C = 1 AND @D = 1 SELECT a, b, c FROM k <JOINы всякие> ORDER BY 1, 2, 3, 4
ELSE IF @A = 1 AND @B = 1 AND @C = 1 AND @D = 2 SELECT a, b, c FROM k <JOINы всякие> ORDER BY 1, 2, 4, 3
...
ELSE IF @A = 4 AND @B = 4 AND @C = 4 AND @D = 4 SELECT a, b, c FROM k <JOINы всякие> ORDER BY 4, 3, 2, 1
вывод: ну оооочень громоздко
На улице - 30 градусов, но я честно сидел и думал как обойтись без такого, слишком "прямого", решения.
Думал долго...были всякие мысли. Например:
1. оставить ORDER BY постоянным, а изменять порядок столбцов в SELECT (особой выгоды в размере и скорости я думаю это не прибавит)
2. если бы в ORDER BY можно было бы ставить переменные... :(
3. повеситься...
Вот собственно и все. Если кто чем сможет буду благодарен. Заранее пасибо.
P.S.: кстати - с использованием этого решения текст SP ~ 180 строк
...
Рейтинг: 0 / 0
12.07.2002, 02:09:57
    #32036388
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL2000, ORDER BY
Если я правильно понимаю, то приведенный пример имеет лишь отдаленное сходство с реальным примером.

Я подозреваю, что в реальности, все намного более упрощено и "закономеризированно". Например, когда @A = 1, то всегда первый критерий сортировки будет столбец A, и так далее.

В этом случае можно например написать такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT [a], , [c], [d] 
FROM .... 
ORDER BY
     CASE @A 
          WHEN  [b]1  THEN CONVERT(varchar(..), [a]) 
          WHEN  2  THEN CONVERT(varchar(..), )
          WHEN  [b]3  THEN CONVERT(varchar(..), [c])
          WHEN  4  THEN CONVERT(varchar(..), [d])
          ELSE ''
     END,
     ........


-- Слон
...
Рейтинг: 0 / 0
12.07.2002, 03:54:44
    #32036389
Святослав
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL2000, ORDER BY
Пасибо...Дожил...Башка спеклась :)
Пасибо еще раз
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL2000, ORDER BY / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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