在SQL中根据不同的列条件筛选出某一列记录
In SQL filter out one column records based on different column condition
我有 2 列 Source_System
、SBG_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
我有 2 列 Source_System
、SBG_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 |