[英]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 | 希夫电子 |
由于您无论如何都对 0 进行了硬编码,因此 All 只需在 All 之前添加一个空格
Select 0 PartyId, ' All' Name
Union
select PartyId, Name
from PartyMst
ORDER BY Name
拉吉
您可以通过以下方式在联合中的顶部指令中使用“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.