Порядок заказа с помощью Union на сервере Sql

Я хочу Список имен партий с 1-й опцией как "Все" из базы данных. но я не буду вставлять "Все" в базу данных, требуется только время. поэтому я написал этот запрос.

Select 0 PartyId, 'All' Name
Union
select PartyId, Name
from PartyMst

Это мой результат

0   All
1   SHIV ELECTRONICS
2   AAKASH & CO.
3   SHAH & CO.

когда я использую order by Name, он отображает ниже результат.

2   AAKASH & CO.
0   All
3   SHAH & CO.
1   SHIV ELECTRONICS

Но я хочу, чтобы 1-й вариант был "Все" , а затем список Сторон в отсортированном порядке. Как я могу это сделать?

Ответы

Ответ 1

Вам нужно использовать подзапрос с предложением CASE в ORDER BY следующим образом:

SELECT * FROM
(
  Select 0 PartyId, 'All' Name
  Union
  select PartyId, Name
  from PartyMst
) tbl
ORDER BY CASE WHEN PartyId = 0 THEN 0 ELSE 1 END
,Name

Вывод:

| PARTYID |             NAME |
------------------------------
|       0 |              All |
|       2 |     AAKASH & CO. |
|       3 |       SHAH & CO. |
|       1 | SHIV ELECTRONICS |

См. этот SQLFiddle

Ответ 2

Так как вы в любом случае hardcoding 0, все просто добавьте пробел перед All

Select 0 PartyId, ' All' Name
Union
select PartyId, Name
from PartyMst
ORDER BY Name

SQL FIDDLE

Раджа

Ответ 3

Вы можете использовать 'order by' с верхним инструкцией в объединении таким образом:

Select 0 PartyId, 'All' Name
Union
select * from ( 
  select top (select count(*) from PartyMst) PartyId, Name
  from PartyMst
  order by Name
)