Упорядочить по пустой строке, последней в объединенной колонке - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь упорядочить таблицу в алфавитном порядке, по возрастанию, с последними нулями, но у меня возникают проблемы.

Приведенный ниже код вызывает следующую ошибку:

Должны появиться элементы ORDER BYв списке выбора, если задано SELECT DISTINCT.

select distinct 
'item' = othertab..item,
'stockedFor' = tab..stocked_for
          + ', ' + tab..stockedFor2
          + ', '+ tab..stockedFor3

from tab

order by case when stockedFor is null then 1 else 0 end, stockedFor

Как я могу вернуть stockedFor в алфавитном порядке и последние значения равны нулю?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Поскольку вы удаляете дубликаты, обходной путь должен использовать GROUP BY для удаления дубликатов вместо DISTINCT.Вопрос изменился, но метод все еще применяется, если поместить все столбцы в SELECT в GROUP BY.

Например:

select 
'item' = othertab..item,
'stockedFor' = tab..stocked_for
          + ', ' + tab..stockedFor2
          + ', '+ tab..stockedFor3

from tab
GROUP BY othertab..item,
         tab..stocked_for
          + ', ' + tab..stockedFor2
          + ', '+ tab..stockedFor3

order by case when stockedFor is null then 1 else 0 end, stockedFor
0 голосов
/ 22 сентября 2018

Просто оберните его в другой оператор выбора:

select stockedFor
from (
       select distinct 
       'stockedFor' = tab..stocked_for
                 + ', ' + tab..stockedFor2
                 + ', '+ tab..stockedFor3
       from tab
     ) x
order by case when stockedFor is null then 1 else 0 end, stockedFor
...