MS SQL Order BY Case - PullRequest
       2

MS SQL Order BY Case

0 голосов
/ 27 августа 2010

У меня есть запрос с 3 столбцами (для примера). Один - DATE, один - [Type] и один - PRODUCT. Мне нужно упорядочить запрос по ДАТЕ, а также по типу в терминах, которые сначала показывают имя, например Buy, Transfer In, а затем Transfer Out и Sell Порядок [Type] очень важен для меня, так как в этом случае я получаю Sell еще до того, как вижу Buy для того же продукта ...

SELECT [PRODUCT], [DATE], [TYPE]
FROM table_name
ORDER BY [DATE] ASC

Есть ли способ заказать это так. Имена не обязательно в алфавитном порядке.

Например:

Шайба, 20100506, Продаю
Шайба, 20100506, Купить

И мне это нужно для того, чтобы купить, потом продать. Но имейте в виду, что Buy и Sell являются просто примерами, и они не будут называться так, поэтому сортировка по алфавиту здесь не поможет. Я хотел бы иметь возможность определить порядок типа, если это возможно.

Ответы [ 2 ]

1 голос
/ 27 августа 2010

Если у вас есть только несколько, вы можете поместить логику в инструкцию case

SELECT [DATE], [TYPE]
FROM table_name
ORDER BY [DATE] ASC, 
   CASE WHEN [Type]  IN (`Buy`,'TransferIn') Then 0 Else 1 End ASC

В противном случае вам может быть лучше создать таблицу, представление или TVF, которые отображают типы и порядки сортировки, которые вы можетезатем присоединяйтесь.

0 голосов
/ 27 августа 2010

Вы имеете в виду, как это:

SELECT ProductID, Name FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID ;

Или это:

SELECT ProductID, Name FROM Production.Product
WHERE Name LIKE 'Lock Washer%'
ORDER BY ProductID DESC;

* MSDN 1008 *

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