SQL Server:如何应用由包含两个逻辑组的多个值组成的字段进行排序

时间:2014-06-10 09:37:33

标签: sql-server

问题在于:

我必须检索和排序逻辑上分为两组的记录:Active(2,1)和Inactive(0)。

问题是Active组由两个值组成,一个值的Inactive和排序必须应用于逻辑组而不是字段值。

E.g。

Product Product_Description Status Priority 
"Soap" "Nice soap" 2 A 
"Sponge" "Hard sponge" 1 B 
"Water" "It comes there too" 0 A 
"Wind" "I don't know how it got here" 0 B 
"Toothbrush" "It's more logical" 2 B 

因此查询应按状态和优先级排序记录。但是Status列包含3个值,逻辑上分为两组(2,1)和(0)。

查询应返回:

"Soap" 2 A 
"Toothbrush" 2 B 
"Sponge" 1 B
"Water" 0 A 
"Wind" 0 B
  • 我无法更改表格结构
  • 我想到的唯一想法是使用Union all并将查询分为两部分。但也许有更好的方式。

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您想将2和1组合在一起,请从0开始,您可以使用

 order by sign(status), priority