联盟到一条线只有'是'值

时间:2017-08-08 10:42:06

标签: sql

我有一张桌子,在一个理想的世界中,每个政策应该只返回1行。对于作为向上销售的一部分出售的商品。

我希望按照每个' PolRef @'基本上是'是'应该取代'否'它应该存在于列中吗。

B@  PolRef@ Uk  Eu  Date    Ep500   Ep700   Ep3000  Keycare Wind    Ep350   Ep250   Legal   Totaladdon  Finance_yn
2   ROGX17PC01  Yes No  2017-07-31 00:00:00.000 No  No  No  No  No  NULL    NULL    NULL    62.00   Yes
2   ROGX17PC01  No  No  2017-07-31 00:00:00.000 No  No  No  No  No  NULL    NULL    Yes 32.00   Yes

这是一个例子,我知道我可以做一个GROUP BY来对PolRef @进行分组,然后对TotalAddon进行总结,但是我怎么能拥有它以便如果'是'存在于该列的“PolRef @”中。这表明了它。

基本上,上面的结果应该是

B@  PolRef@ Agent   Uk  Eu  Date    Ep500   Ep700   Ep3000  Keycare Wind    Ep350   Ep250   Legal   Totaladdon  Finance_yn
2   ROGX17PC01  NULL    Yes No  2017-07-31 00:00:00.000 No  No  No  No  No  NULL    NULL    Yes 94.00   Yes

1 个答案:

答案 0 :(得分:0)

这是优先级查询。一种方法使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by PolRef@
                                order by uk desc -- 'Yes' comes before 'No'
                               ) as seqnum
      from t
     ) t
where seqnum = 1;