오른쪽 테이블에서 레코드를 제외 할 위치를 사용하는 왼쪽 외부 조인

D_ 베스터

Sql Server 2008 사용. 작업 테이블이 있습니다. 일반적으로 모든 고객의 경우 job # 1 다음에 job # 2가 이어지고 job # 3이 이어집니다.

CustNum, JobDate, TypeJob
100,   4/10/2019, 2
100,   4/11/2019, 1
100,   4/12/2019, 2
100,   4/13/2019, 3
100,   4/13/2019, 3
222,   4/10/2019, 2
222,   4/11/2019, 1
333,   4/11/2019, 2
444,   3/1/2019,  3
444,   4/10/2019, 1
444,   4/11/2019, 2

날짜> 작업 # 1 (모두 기존) 인 작업 # 2를 가진 모든 고객을 찾고 있지만 나중에 작업 # 3이 입력되지 않았습니다.

  • 고객 100은 작업 1,2,3이 모두 순차적 인 날짜 순서로 완료되면 괜찮습니다. 고객 100을 원하지 않습니다.
  • 고객 222는 작업 # 1 이후에 작업 # 2를 가지고 있지 않으므로 저도 그 작업을 원하지 않습니다.
  • 고객 333은 1 번 직업이 없어서 그 직업을 원하지 않습니다.
  • 고객 444는 제가 찾고있는 고객입니다.

여기 내가 한 일이 있고 작동하지만 서투른 것 같습니다.

Select
  L.CustNum, 
  L.JobDate1, 
  L.JobDate2,
  R.JobDate3
From
(
    --A<B has JobDate1 followed by JobDate2
    Select 
      First.CustNum as [CustNum], 
      First.JobDate as JobDate1,
      Second.JobDate as JobDate2
    From
    (
        Select [CustNum], Max([JobDate]) as JobDate From tbJobs
        Where [TypeJob] = 1
        Group by CustNum
    ) First
    Join
    (
        Select [CustNum], Max([JobDate]) as JobDate From tbJobs
        Where [TypeJob] = 2
        Group by CustNum
    ) Second
    On First.CustNum = Second.CustNum
    Where Second.JobDate > First.JobDate
) L
Left Outer Join
(
    --A<B #and# C>A has JobDate1 followed by JobDate2 and JobDate3
    Select 
      First.CustNum as [CustNum], 
      --First.JobDate as JobDate1,
      --Second.JobDate as JobDate2,
      Third.JobDate as JobDate3
    From
    (
        Select [CustNum], Max([JobDate]) as JobDate From tbJobs 
        Where [TypeJob] = 1
        Group by CustNum
    ) First
    Join
    (
        Select [CustNum], Max([JobDate]) as JobDate From tbJobs
        Where [TypeJob] = 2
        Group by CustNum
    ) Second
    On First.CustNum = Second.CustNum
    Join
    (
        Select [CustNum], Max([JobDate]) as JobDate From tbJobs
        Where [TypeJob] = 3
        Group by CustNum
    ) Third
    On Second.CustNum = Third.CustNum
    Where Third.JobDate > First.JobDate
    And Second.JobDate > First.JobDate
) R
On First.CustNum = Third.CustNum
Where JobDate3 is null
Order by CustNum

제가 정말로하고 싶은 것은 다음과 같습니다.

Select ... From
(Select ...) First
Join
(Select ...) Second
Left Outer Join
(Select ...) Third
On ...
Where Second.JobDate > First.JobDate 
    And (Third.JobDate > First.JobDate) is null

Third.JobDate <= First.JobDate를 무시하고 Third.JobDate (First.JobDate보다 큼)가 null 인 행만 찾을 수 있도록 Where 문을 어떻게 공식화합니까?

SQL Server 2008 사용.

팀 비겔 라이젠

간단한 집계 쿼리가 여기에서 작동합니다.

WITH cte AS (
    SELECT
        CustNum,
        MAX(CASE WHEN TypeJob = 1 THEN JobDate END) AS date1,
        MAX(CASE WHEN TypeJob = 2 THEN JobDate END) AS date2,
        MAX(CASE WHEN TypeJob = 3 THEN JobDate END) AS date3
    FROM tbJobs
    GROUP BY CustNum
)

SELECT CustNum
FROM cte
WHERE
    COALESCE(date2, date1) > COALESCE(date1, date2) AND
    (date3 < date2 OR date3 IS NULL);

COALESCE에서를 사용 HAVING하면 고객이 첫 번째 날짜와 두 번째 날짜가 모두있는 경우에만 통과 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MySQL은 오른쪽 테이블에서 일치하는 레코드를 제외하고 왼쪽 테이블의 모든 레코드를 반환합니다.

분류에서Dev

Entity Framework에서 Linq를 사용하여 외래 키 테이블 만있는 왼쪽 외부 조인

분류에서Dev

구조 해제 할당의 오른쪽이 왼쪽 부분의 인덱스 증가를 무시하는 이유

분류에서Dev

2 개의 오른쪽 테이블이있는 SQL '왼쪽 외부 조인

분류에서Dev

LINQ를 사용하는 IQueryable 왼쪽 외부 조인의 확장 메서드

분류에서Dev

MySQL 왼쪽 조인이 일치하지 않는 레코드를 제외합니까?

분류에서Dev

LINQ가 null 참조 오류를 제공하는 여러 where 조건이있는 왼쪽 외부 조인

분류에서Dev

일부 오른쪽에서 왼쪽 텍스트를 포함하면서 레이블 텍스트를 왼쪽에서 오른쪽으로 강제 적용

분류에서Dev

Linq-내부 조인이 왼쪽 테이블에서 모든 레코드를 검색하지 않음

분류에서Dev

DAX를 사용한 왼쪽 외부 조인 합계

분류에서Dev

Linq에서 왼쪽 외부 조인을 사용하는 방법

분류에서Dev

모든 왼쪽 레코드가 오른쪽에있는 MySQL 조인 테이블

분류에서Dev

1 외부 조인 대 오른쪽 조인을 따르는 왼쪽 조인

분류에서Dev

왼쪽 외부 조인을 사용하여 두 테이블을 조인하고 오른쪽 테이블 열을 기반으로 새 열 값 채우기

분류에서Dev

직원이없는 부서를 포함하는 왼쪽 외부 조인 대 하위 쿼리

분류에서Dev

왼쪽 및 오른쪽 데이터 조회 (VBA 포함 또는 제외)

분류에서Dev

다음 시나리오에서 왼쪽 외부 조인을 만드는 방법

분류에서Dev

세 개의 테이블이있는 SQL 왼쪽 외부 조인

분류에서Dev

Oracle에서 왼쪽 외부 조인을 사용할 때 잘못된 식별자

분류에서Dev

제약 열이있는 SQL 왼쪽 외부 조인

분류에서Dev

CSS Flexbox 수평 그룹; 오른쪽 하나를 제외하고 모두 왼쪽

분류에서Dev

왼쪽 조인에서 내부 쿼리를 사용하는 SQL

분류에서Dev

왼쪽 조인에서 내부 쿼리를 사용하는 SQL

분류에서Dev

linq를 사용하여 그룹과 오른쪽 외부 조인 수행

분류에서Dev

왼쪽 외부 조인 IEnumerable <T>를 DataTable에-매개 변수는 null 일 수 없음 오류

분류에서Dev

컨테이너 내부에서 오른쪽 정렬 된 div를 사용하여 div를 왼쪽에 배치

분류에서Dev

오른쪽 테이블에 데이터가 누락 된 SQL의 왼쪽 외부 조인

분류에서Dev

제한된 오른쪽 테이블에서 왼쪽 조인

분류에서Dev

오른쪽 테이블에서 레코드를 사용할 수 없을 때 Laravel Left 조인이 빈 결과를 반환합니다.

Related 관련 기사

  1. 1

    MySQL은 오른쪽 테이블에서 일치하는 레코드를 제외하고 왼쪽 테이블의 모든 레코드를 반환합니다.

  2. 2

    Entity Framework에서 Linq를 사용하여 외래 키 테이블 만있는 왼쪽 외부 조인

  3. 3

    구조 해제 할당의 오른쪽이 왼쪽 부분의 인덱스 증가를 무시하는 이유

  4. 4

    2 개의 오른쪽 테이블이있는 SQL '왼쪽 외부 조인

  5. 5

    LINQ를 사용하는 IQueryable 왼쪽 외부 조인의 확장 메서드

  6. 6

    MySQL 왼쪽 조인이 일치하지 않는 레코드를 제외합니까?

  7. 7

    LINQ가 null 참조 오류를 제공하는 여러 where 조건이있는 왼쪽 외부 조인

  8. 8

    일부 오른쪽에서 왼쪽 텍스트를 포함하면서 레이블 텍스트를 왼쪽에서 오른쪽으로 강제 적용

  9. 9

    Linq-내부 조인이 왼쪽 테이블에서 모든 레코드를 검색하지 않음

  10. 10

    DAX를 사용한 왼쪽 외부 조인 합계

  11. 11

    Linq에서 왼쪽 외부 조인을 사용하는 방법

  12. 12

    모든 왼쪽 레코드가 오른쪽에있는 MySQL 조인 테이블

  13. 13

    1 외부 조인 대 오른쪽 조인을 따르는 왼쪽 조인

  14. 14

    왼쪽 외부 조인을 사용하여 두 테이블을 조인하고 오른쪽 테이블 열을 기반으로 새 열 값 채우기

  15. 15

    직원이없는 부서를 포함하는 왼쪽 외부 조인 대 하위 쿼리

  16. 16

    왼쪽 및 오른쪽 데이터 조회 (VBA 포함 또는 제외)

  17. 17

    다음 시나리오에서 왼쪽 외부 조인을 만드는 방법

  18. 18

    세 개의 테이블이있는 SQL 왼쪽 외부 조인

  19. 19

    Oracle에서 왼쪽 외부 조인을 사용할 때 잘못된 식별자

  20. 20

    제약 열이있는 SQL 왼쪽 외부 조인

  21. 21

    CSS Flexbox 수평 그룹; 오른쪽 하나를 제외하고 모두 왼쪽

  22. 22

    왼쪽 조인에서 내부 쿼리를 사용하는 SQL

  23. 23

    왼쪽 조인에서 내부 쿼리를 사용하는 SQL

  24. 24

    linq를 사용하여 그룹과 오른쪽 외부 조인 수행

  25. 25

    왼쪽 외부 조인 IEnumerable <T>를 DataTable에-매개 변수는 null 일 수 없음 오류

  26. 26

    컨테이너 내부에서 오른쪽 정렬 된 div를 사용하여 div를 왼쪽에 배치

  27. 27

    오른쪽 테이블에 데이터가 누락 된 SQL의 왼쪽 외부 조인

  28. 28

    제한된 오른쪽 테이블에서 왼쪽 조인

  29. 29

    오른쪽 테이블에서 레코드를 사용할 수 없을 때 Laravel Left 조인이 빈 결과를 반환합니다.

뜨겁다태그

보관