Порядок заказа с помощью 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 |
Ответ 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
)