15

データベースから「すべて」として最初のオプションを持つパーティー名のリストが必要です。しかし、データベースに「すべて」を挿入するのではなく、取得時間だけが必要です。だから、私はこのクエリを書きました。

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

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

4

3 に答える 3

38

CASE次のようなinORDER 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 名前
0 全て
2 AAKASH & CO.
3 SHAH & CO.
1 シブ・エレクトロニクス

このSQLFiddleを参照してください

于 2013-08-14T07:17:38.240 に答える
1

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

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

SQL フィドル

ラージ

于 2013-08-14T07:24:39.430 に答える
1

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

Select 0 PartyId, 'All' Name
Union
select * from ( 
  select top (select count(*) from PartyMst) PartyId, Name
  from PartyMst
  order by Name
)
于 2014-04-23T02:15:56.333 に答える