0

我需要先将我的结果集与“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

如果我在下面这样做,它会起作用,但是否可以在不使用联合的情况下做同样的事情。

我正在为大量记录执行此操作。

它使用:

Select * from Table1 where orderid = 123 and State = 'NY'
Union
Select * from Table1 where orderid = 123 and State <> 'NY'

使用 SQL Server 2008

谢谢

4

2 回答 2

2

在查询结束时试试这个:

order by (case when state = 'NY' then 0 else 1 end),
         state

作品是偶然的事实union——完全不能保证。排序结果的唯一方法是order by在查询的最外层指定一个子句。

于 2013-04-04T19:49:14.037 回答
0

您可以使用case语句到达顶部,'NY'然后按如下所示:StateType desc

小提琴演示

select OrderID, State, Type
from T
where orderID = 123
order by case when State = 'NY' then '0' else State end, Type desc
于 2013-04-04T19:51:46.100 回答