具有特定值的值从输出中排除

时间:2015-06-10 11:15:59

标签: sql

SKU VCODE   rollover
140053, M11 ,   STONE
140053, M11 ,   REC
TCI950600,  T16  ,  REC
PSR1400600303,  P2J ,   STONE
BUS14007,   L22 ,   NIT
BUS14007,   L22  ,  STONE
TLS1400E,   TSP  ,  RECFIT
BOR140120,  B25  ,  STONE
BOR140120,  B25  ,  REC

如果相同的SKU同时显示ROLLOVER ='STONE''REC',或者SKU仅显示ROLLOVER ='REC',则从输出中排除

输出应为

SKU VCODE   rollover
PSR1400600303,  P2J  ,  STONE
BUS14007,   L22 ,   NIT
BUS14007,   L22,    STONE
TLS1400E,   TSP,    RECFIT

1 个答案:

答案 0 :(得分:0)

通用实现将是:

select SKU, VCODE, ROLLOVER
  from YOUR_TABLE ot
  where not exists (
     select 1
       from YOUR_TABLE it
       where it.ROLLOVER = 'REC'
         and it.SKU = ot.SKU
  )

此处“没有带ROLLOVER ='STONE'或'REC'的SKU”涵盖更多通用条件“没有SKU且ROLLOVER ='REC'”。

可能有更高效的实施选项,但这些选项取决于某些DBMS提供的功能。