sql - Sql Server 中带有 Union 的 Order by 子句

标签 sql sql-server sql-order-by union

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

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

这是我的结果

0   All
1   SHIV ELECTRONICS
2   AAKASH & CO.
3   SHAH & CO.

当我使用按名称排序时,它会显示以下结果。

2   AAKASH & CO.
0   All
3   SHAH & CO.
1   SHIV ELECTRONICS

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

最佳答案

您需要使用 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

输出:

<表类=“s-表”> <标题> PARTYID 姓名 <正文> 0 全部 2 阿卡什公司 3 SHAH & CO. 1 SHIV电子

参见this SQLFiddle

关于sql - Sql Server 中带有 Union 的 Order by 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225354/

相关文章:

sql - 表命名困境 : Singular vs. 复数名称

mysql - 按复杂顺序排序

PHP MYSQL 显示今天日期的结果

sql - 返回不同组间时间增量的中值

sql - 基于引用记录的自定义排序

javascript - 如何将 ng-repeat 值或 ID 传递给我的附加元素?这可能吗?

sql - Postgresql 8.3 重复行

sql-server - ADODB 打开记录集失败/"Operation is not allowed when object is closed"

sql - 在 Power BI 中使用计数和分组依据

mysql - 查找 mysql 表中特定 ID 的最后一条记录