сортировка ACCESS sql запрос - PullRequest
2 голосов
/ 08 июля 2010

Я создал другую ветку, которая решила мою проблему, однако я рассмотрел отчет, и они хотят пересмотреть его.Я постараюсь объяснить:

Примите во внимание следующее:

alt text

Мне просто нужна часть ORDER BY запроса sql.Три поля: ACRNo, Type и Pty.

  1. Я хочу сначала отсортировать по типу.

  2. Затем я хочу отсортировать по Pty. Однако в конце я хочу пустые.и отсортированные на вершине.(обычный orderby ставит пустые сверху).

  3. После того, как это было отсортировано, я хочу, чтобы номера ACR были Сортированные ДЛЯ ВСЕХ ПУСТОPTY.Я не хочу, чтобы ACR сортировались (или мне все равно), когда к ним прикреплен pty.Однако, когда Pty пусто, я хочу, чтобы сверху был самый высокий номер.

Надеюсь, это имеет смысл.

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Возможно, есть лучший способ, но вот хакерский метод, который должен работать, если у вас нет Pty, начинающегося с нескольких z:

order by Type, Pty + 'zzz',ACRNo desc
2 голосов
/ 08 июля 2010
ORDER BY
    type,
    IIF(pty IS NULL, 1, 0),
    pty,
    acrno

Это предполагает, что под "пустым PTY" вы подразумеваете NULL. Если вы хотите, чтобы фактические пустые строки также были внизу, вам нужно немного их изменить:

ORDER BY
    type,
    IIF(NZ(pty, '') = '', 1, 0),
    NZ(pty, ''),
    acrno

SQL сортирует по столбцам (или выражениям) в порядке, в котором они перечислены в предложении ORDER BY. Таким образом, вышеприведенное будет сначала сортироваться по «типу», затем для строк с тем же значением для «типа» оно будет сортироваться с помощью оператора IIF (). В этом случае IIF () возвращает 1, если Pty не имеет значения, в противном случае он вернет 0. Таким образом, строки без значения Pty будут отсортированы после строк со значением. Затем выполняется сортировка по Pty (где все предыдущие выражения в ORDER BY имеют одинаковое значение) и ACRNo, если они имеют одинаковое значение Pty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...