在SQL中根据不同的列条件筛选出某一列记录

In SQL filter out one column records based on different column condition

我有 2 列 Source_SystemSBG_NAME。我想为 SBG_NAME PMT

过滤掉 Source_System Microsiga

数据集是这样的:

Source_System SBG_Name
CIP300 PMT
Microsiga PMT
CIP900 HBT
Microsiga HBT

输出应该是

Source_System SBG_Name
CIP300 PMT
CIP900 HBT
Microsiga HBT
SELECT
"Source_System"
,"SBG_Name"
FROM table

MINUS

SELECT
"Source_System"
,"SBG_Name"
FROM table
WHERE "Source_System" = 'Microsiga' and "SBG_Name" = 'PMT'

你可以用这样的方法得到结果。这会显示所有记录,但 Source_System 是 Microsiga 且 SBG_Name 是 PMT 的记录除外。

或者这会产生相同的结果,并且更加紧凑:

SELECT
"Source_System"
,"SBG_Name"
FROM table
WHERE  NOT ("Source_System" = 'Microsiga' and "SBG_Name" = 'PMT')

或者翻转 SChnurres 答案,只是不选择你不想要的东西

SELECT
    Source_System
    ,SBG_Name 
FROM VALUES 
  ('CIP300','PMT'),
  ('Microsiga','PMT'),
  ('CIP900','HBT'),
  ('Microsiga','HBT')
  v(Source_System,  SBG_Name)
WHERE NOT(Source_System = 'Microsiga' and SBG_Name = 'PMT');

给出:

SOURCE_SYSTEM SBG_NAME
CIP300 PMT
CIP900 HBT
Microsiga HBT