select * from T
where (A=V_A  AND V_B IS NULL) OR (B=V_B and V_B IS NOT NULL)
看看是这效果不?
V_B为空时,相当于A=V_A
   不为空时,相当于B=V_B

解决方案 »

  1.   

    是有点说的不太清楚,这样  table1
         sbh                a              c               
          X1                 1            num1
          X1                 2            num2
          X3                 1             num3
          X4                 1             num4
         X5                  1             num5
         X5                  2             num6
    取表中所有的数, 但字段a有2个值时 只取 a=2的值 ,a=1的值不取
      

  2.   

    会不会有这样的情况
         sbh                a              c               
          X1                 1            num1
          X1                 3            num2a有两个值1,3,但是没有2,这种情况怎么取数据呢? 都取出来还是其他逻辑?
      

  3.   

    select * from
      (select  A.*,ROW_NUMBER() OVER (PARTITION BY sbh ORDER BY a desc) rn
      from table1 A)
    where rn=1