MS SQL Order BY案例

问题描述:

我有一个3列的查询(为了举例)。一个是DATE,一个是[Type],另一个是PRODUCT。我需要通过DATE命令查询,但也可以通过输入名称,如Buy,Transfer In首先显示,然后显示Transfer OutSell。的[Type]顺序对我来说是非常重要的,因为存在这种情况下,我得到Sell我之前也看到Buy对同一产品...MS SQL Order BY案例

SELECT [PRODUCT], [DATE], [TYPE] 
FROM table_name 
ORDER BY [DATE] ASC 

有没有办法来订购吧这样。名字不是必须的字母顺序。

例如:

洗衣机,20100506,卖
洗衣机,20100506,购买

,我需要的是,为了买,然后出售。但请记住,买入和卖出仅仅是一个例子,它不会被这样命名,所以按字母顺序排序并不会在这里帮助。我希望能够定义类型的顺序,如果可能的话。

如果你只有几个你可以把逻辑case语句

SELECT [DATE], [TYPE] 
FROM table_name 
ORDER BY [DATE] ASC, 
    CASE WHEN [Type] IN (`Buy`,'TransferIn') Then 0 Else 1 End ASC 

否则,您最好创建一个表,视图或TVF来映射可以加入的类型和排序顺序。

+0

将立即测试;-) – MadBoy 2010-08-27 10:36:24

+0

经过测试,它似乎工作!再测试一下,看看我是不是会被其他情况下的巴士撞上;)非常感谢 – MadBoy 2010-08-27 10:39:46

你的意思是这样的:

SELECT ProductID, Name FROM Production.Product 
WHERE Name LIKE 'Lock Washer%' 
ORDER BY ProductID ; 

或者这样:

SELECT ProductID, Name FROM Production.Product 
WHERE Name LIKE 'Lock Washer%' 
ORDER BY ProductID DESC; 

MSDN

+0

不要认为这对我有用。更新我的帖子,以确保它对我想要的有更多评论。 – MadBoy 2010-08-27 10:35:06