我有一个由查询驱动的SQL报告,它按照某个数值的升序对其进行排序。但是,用户希望并发两个特定的数据行,这些数据恰好出现在查询结果中的不同序号位置。有没有办法通过报告的驱动SQL或.rdl文件本身来做到这一点?
答案 0 :(得分:3)
只需将另一个计算表达式作为Expression的第一个顺序添加,将这两个值放在所有其他值之前......
Select [Other stuff]
From Table
Order By Case colName
When first_val then 0
When second_val then 0
else 1 End,
colName
或编辑(包括@ astander的建议)
Select [Other stuff]
From Table
Order By Case
When colName In (first_Val, second_Val)
Then 0 else 1 End,
colName
和另一个编辑,在first_Val之后立即放置second_val ...
Select [Other stuff]
From Table
Order By Case
When colName < first_Val And colName <> secondVal Then 0
When colName = first_Val Then 1
When colName = secondVal Then 2
Else 3 End,
colName
答案 1 :(得分:0)
听起来你问这个:
select * from table where col1 = first_val or col1 = second_val;
其中first_val和second_val是用户想要返回的行的值。
如果那不是您要找的,请澄清您的问题。
答案 2 :(得分:-1)
此外,CURSORs是细粒度控制的好工具。我正在使用它,但我会看看是否可以通过使用ORDER BY CASE建议来删除迭代代码。