选择空值,然后从同一列中选择最大值

时间:2017-01-19 19:49:14

标签: sql-server null max

  OEITEMLONG Workorder Amount Date
               10400     1200   1/1/2017
               10400     1200   2/1/2017
    100000     77777     500    1/2/2017
    99999      77777     -500   1/2/2017
    818181     51515     9500   1/3/2017

需要能够首先在列中使用null / blank“OEITEMLONG”拉出所有行。然后仅使用不同的工单号来拉出“OEITEMLONG”列的MAX值。我们的系统使用相同的工单编号,但如果发出信用,则使用相同的工单编号,但会发出更高的值“OEITEMLONG”编号,这就是我想要使用的所有行与空白“ OEITEMLONG“数字。

OEITEMLONG Workorder Amount Date
           10400     1200   1/1/2017
           10400     1200   2/1/2017
100000     77777     500    1/2/2017
818181     51515     9500   1/3/2017

这应该是理想的结果

谢谢,

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?

select t.*
from vWOSEGHEADSmryALL t
where OEITEMLONG is null
union all
select t.*
from vWOSEGHEADSmryALL t
where OEITEMLONG is not null and
      OEITEMLONG = (select max(t2.OEITEMLONG)
                    from vWOSEGHEADSmryALL t2
                    where t2.Workorder = t.Workorder
                   );

对于您的数据,应返回:

OEITEMLONG Workorder Amount Date
           10400     1200   1/1/2017
           10400     1200   2/1/2017
100000     77777     500    1/2/2017
818181     51515     9500   1/3/2017