根据条件sql server 2008过滤行

时间:2013-10-02 01:44:02

标签: sql sql-server sql-server-2008 filter

以下是样本数据。

Op_ID   manual  TT 
------------------
1       0       32
1       1       38.4
2       0       4.56
2       1       7.5
55      1       50
55      1       30
  • 案例1:我需要检查Op_id和手动列,如果手动列为0,那么我需要取tt值= 32并忽略下面的记录。同样需要检查其他记录。 op_id = 2和manual = 0然后需要取tt = 4.56。
  • 情况2:如果两个记录都有手动= 1,那么我需要取tt的最大值,即tt = 50.(对于op_id = 55)。
So i need the output like below.
Op_ID   manual  TT 
------------------
1       0       32
2       0       4.56
55      1       50

1 个答案:

答案 0 :(得分:1)

select opid, manual, tt
from (
  select *, row_number() over (partition by opid order by manual, tt desc) rn
  from yourtable ) v
where rn = 1