Remove duplicates based on two columns

放肆的年华 提交于 2020-01-02 17:31:10

问题


I have this table, and i would like a SELECT to exclude the lines marked. The general rule would be:

  • IF there are two or more lines where the controlname AND brandname AND grouptypes columns are equal
  • THEN keep the row where groupname is NOT 'Keine Zuordnung'.
CONTROLNAME   BRANDNAME   GROUPTYPES    GROUPNAME
ECU           AUDI        VERNETZER         1
ECU           AUDI        VERNETZER     Keine zuordnung    <--THIS
ECU           AUDI        FUSI          Keine zuordnung    <--THIS
ECU           AUDI        FUSI              2
ECU2          AUDI        FACHANWENDER  Keine zuordnung
ECU3          AUDI        FACHANWENDER  Keine zuordnung

Can i have a little help with this please? Thank you!


回答1:


Here is one method:

select t.*
from (select t.*,
             count(*) over (partition by  controlname, brandname, grouptypes) as cnt
      from t
     ) t
where cnt = 1 or groupname <> 'Keine Zuordnung';

It uses a window function to get the count and then a where for your logic.



来源:https://stackoverflow.com/questions/40157560/remove-duplicates-based-on-two-columns

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!