我需要先将结果集与“NY”条目分组,然后再将其他状态条目归还。
示例:
OrderID State Type
----------------------------
123 CA Checque
123 NY ELectronic
222 JC Checque
123 NY Checque
OrderID
是主键
结果集需要如下所示:
OrderID State Type
----------------------------
123 NY ELectronic
123 NY Checque
123 CA Checque
对于OrderID = 123
如果我在下面这样做,它可以工作,但是如果不使用union就可以这样做。
我这样做是为了一大堆记录。
使用:
Select * from Table1 where orderid = 123 and State = 'NY'
Union
Select * from Table1 where orderid = 123 and State <> 'NY'
使用SQL Server 2008
由于
答案 0 :(得分:2)
在查询结束时尝试此操作:
order by (case when state = 'NY' then 0 else 1 end),
state
union
工作的事实是偶然的 - 完全没有保证。订购结果的唯一方法是在查询的最外层指定一个order by
子句。
答案 1 :(得分:0)
您可以使用case
语句将'NY'
置于顶部,然后使用State
和Type desc
,如下所示:
<强> FIDDLE DEMO 强>
select OrderID, State, Type
from T
where orderID = 123
order by case when State = 'NY' then '0' else State end, Type desc