>

표 2

ID  DATE
--  ----------
01  2018-04-01
03  2017-06-23

ID를 기준으로 날짜 또는 최소 날짜가없는 ID를 반환하는 SQL을 작성하는 데 어려움을 겪고 있습니다

예 : ID 01, 03 만 01과 03 사이에 03이 더 빠른 날짜를 가지므로 SQL이 03을 리턴해야합니다.

하지만 ID 01,02,03 만 02에는 데이터가 없으므로 SQL은 02를 반환해야합니다.

모든 ID에 대해

01,02,03,04 SQL은 02 또는 04를 리턴 할 수 있습니다.

MIN (DATE) 및 NOT EXISTS 절을 가지고 놀았지만 빈 데이터를 반환하는 방법을 모르기 때문에 운이 없습니다.

샘플 SQL은 대단히 감사합니다!

내가 시도한 SQL

SELECT MIN(CASE WHEN DATE IS NULL THEN '1900-01-01' ELSE DATE END)
FROM TABLE2
WHERE ID IN (01,02,03,04)

그러나 SQL 위의 경우 기존 날짜의 최소값을 제공합니다. 기존 날짜 이외의 날짜는 1900-01-01로 기본 설정되지 않습니다.


  • 답변 # 1

    왼쪽 외부 조인 사용 :

    표 1 t1에서 t1.name, t2.date를 선택하십시오. 왼쪽 조인 t1.id = t2.id의 표 2 t2

    그런 다음 t2.date에서 isull을 사용하여 해당 필드에 원하는 것을 고정하십시오.

  • 답변 # 2

    확인하려는 값이 표 1에 있다고 가정합니다

    SELECT MIN(CASE WHEN table2.DATE IS NULL THEN '1900-01-01' ELSE table2.DATE END) as output
    FROM TABLE1
    left join TABLE2
      on table1.ID = table2.ID
    
    

  • 답변 # 3

    두 테이블에서 일치하지 않는 값이있는 경우 전체 조인을 사용하십시오

    select a.id, a.name, min(isnull(b.date, '1900-01-01')) mindate from #table1 a 
    full join  #table2 b on a.id=b.id  
    group by a.id, a.name
    
    

  • 답변 # 4

    어떻게 이런가요? 행운을 빕니다!

    SELECT t1.id FROM t1 LEFT JOIN t2 ON t2.id = t1.id LEFT JOIN ( SELECT MIN(COALESCE(date, DATE('2000-01-01'))) AS minimum_date FROM t2 ) minimum_date ON minimum_date = COALESCE(t2.date, DATE('2000-01-01')) ;

  • 이전 dict에서 상속 한 항목의 1-1 매핑 인 Python 클래스
  • 다음 nginx - 호스트 및 경로가 아닌 GCE LoadBalancer와 함께 Google Cloud Storage Bucket 사용