繁体   English   中英

Sql Server 中带有 Union 的 Order by 子句

[英]Order by clause with Union in Sql Server

我想要来自数据库的第一个选项为“全部”的派对名称列表。 但我不会将“全部”插入数据库,只需要检索时间。 所以,我写了这个查询。

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

但是,我希望第一个选项为“全部”,然后按排序顺序列出缔约方。 我怎样才能做到这一点?

您需要在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

输出:

党号 姓名
0 全部
2 阿卡什公司
3 沙赫公司
1 希夫电子

看到这个 SQLFiddle

由于您无论如何都对 0 进行了硬编码,因此 All 只需在 All 之前添加一个空格

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

SQL 小提琴

拉吉

您可以通过以下方式在联合中的顶部指令中使用“order by”:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM