我有一个表,在其中我需要所有符合第一个查询(MIS)中条件的行,但是如果EMPID <92,则只需要包含'EMP'。我敢肯定这是一个简单的声明,但我无法弄清楚。救命!
SELECT MIS.*
FROM
(SELECT EMPID, ORG, LAST_NAME, FIRST_NAME, JCODE, DPTID, TITLE, STATUS, BU, LOC, CO, SUP_ID, AL_EMPID
FROM EMPLOYEE_TBL
WHERE REHIRE_ELIG <> 'Y'
AND HIRE_OVR <> 'Y'
AND SUP_ID IS NOT NULL
AND JCODE IS NOT NULL
AND ORG IN ('EMP','CWD')) MIS
WHERE MIS.ORG = 'EMP'
AND EMPID < '9200000'
ORDER BY MIS.ORG DESC, MIS.JCODE ASC
答案 0 :(得分:0)
听起来像是左外连接。
类似的东西:
选择*
from table1 mis left外部联接table1 msi2
在mis.id = mis2.id
上
其中mis2.empid <92
那么mis2中的所有内容都是id <92。
答案 1 :(得分:0)
只需在OR
中使用WHERE
。我的设置是在SQL 2017中完成的,但是这是相当标准的语法,应该可以在任何SQL版本中使用。
MS SQL Server 2017架构设置:
CREATE TABLE employee_tbl (
EMPID int
, ORG varchar(5)
, other_stuff varchar(50)
);
INSERT INTO employee_tbl (EMPID, ORG, other_stuff)
VALUES
( 90000000, 'EMP', 'IncludeMe' )
, ( 91000000, 'EMP', 'IncludeMe' )
, ( 91000001, 'CWD', 'IncludeMe' )
, ( 91000002, 'EMP', 'IncludeMe' )
, ( 92000000, 'EMP', 'ExcludeMe' )
, ( 95000000, 'EMP', 'ExcludeMe' )
;
主要查询:
SELECT *
FROM employee_tbl
WHERE ( ORG = 'EMP' AND EMPID < 92000000 )
OR ( ORG = 'CWD' )
Results :
| EMPID | ORG | other_stuff |
|----------|-----|-------------|
| 90000000 | EMP | IncludeMe |
| 91000000 | EMP | IncludeMe |
| 91000001 | CWD | IncludeMe |
| 91000002 | EMP | IncludeMe |