web-dev-qa-db-ja.com

SQL Serverのユニオンを使用した句による注文

データベースから「すべて」として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

しかし、私は最初のオプションを「すべて」にしてから、並べ替えられた順序でパーティーのリストを表示します。これどうやってするの?

15
Dhaval Ptl

次のように、ORDER BY句でCASEを使用してサブクエリを使用する必要があります。

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 |

this SQLFiddle を参照してください

34
hims056

次のように、ユニオンの最上位命令で「order by」を使用できます。

Select 0 PartyId, 'All' Name
Union
select * from ( 
  select top (select count(*) from PartyMst) PartyId, Name
  from PartyMst
  order by Name
)
2
Daniel De León

とにかく0をハードコーディングしているので、AllはAllの前にスペースを追加するだけです。

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

SQL FIDDLE

ラージ

1
Raj