SQL-사용 가능한 데이터가없는 경우 대체 값 가져 오기

존 M

다음과 같은 테이블 TBL_A가 있습니다.

   CLASS_ID  PERIOD_DT   MAX_DT
  -----------------------------------
   358614  2018-09-30  2018-09-30
   358614  2017-09-30  2018-09-30
   358614  2016-09-30  2018-09-30
   358614  2015-09-30  2018-09-30
   358614  2014-09-30  2018-09-30
   358614  2013-09-30  2018-09-30

및 TBL_B LIKE :

    CLASS_ID  CLASS_DT   
   ----------------------
    358614  2018-09-30  
    358614  2017-09-30  
    358614  2016-09-30 

지난 6 년 동안 CLASS_DT로 결과 세트를 얻으려고하는데 일부 클래스에는 충분한 정보가 없습니다. 날짜를 사용할 수없는 경우 현재 기간 날짜에 가까운 사용 가능한 이전 데이터를 사용해야합니다. 그래서 내 최종 결과는

예상 결과 :

 PERIOD_DT   FALLBACK_CLASS_DT
-------------------------------
 2018-09-30  2018-09-30 
 2017-09-30  2017-09-30
 2016-09-30  2016-09-30  
 2015-09-30  2016-09-30 // fallback dates, since they are not available
 2014-09-30  2016-09-30
 2013-09-30  2016-09-30          

그리고 내가 시도하는 쿼리는 다음과 같습니다.

 SELECT A.PERIOD_DT,
   (SELECT TOP 1 CAST(B.CLASS_DT AS DATE)
    FROM TBL_B AS B
    WHERE B.CLASS_ID = A.CLASS_ID
      AND CAST(B.CLASS_DT AS DATE) <= CAST(A.PERIOD_DT AS DATE) 
      AND CAST(A.PERIOD_DT AS DATE) <= CAST(A.MAX_DT AS DATE)
    ORDER BY B.CLASS_DT DESC) AS FALLBACK_CLASS_DT
FROM TBL_A AS A
WHERE A.CLASS_ID = 358614  
ORDER BY A.PERIOD_DT DESC;

내가 얻는 결과는 다음과 같습니다.

PERIOD_DT   FALLBACK_CLASS_DT
-------------------------------
 2018-09-30  2018-09-30 
 2017-09-30  2017-09-30
 2016-09-30  2016-09-30  
 2015-09-30  NULL
 2014-09-30  NULL
 2013-09-30  NULL 

누구든지이 결과를 얻을 수있는 방법을 알려줄 수 있습니까?

존 M

나를 위해 일한 쿼리는 다음과 같습니다.

  SELECT 
    A.CLASS_ID,
    A.PERIOD_DT,
    ISNULL((SELECT TOP 1 CAST(B.CLASS_DT AS DATE)
    FROM TBL_B AS B
    WHERE B.CLASS_ID = A.CLASS_ID
          AND CAST(B.CLASS_DT AS DATE) <= CAST(A.PERIOD_DT AS DATE) 
          AND CAST(A.PERIOD_DT AS DATE) <= CAST(A.MAX_DT AS DATE)
    ORDER BY B.CLASS_DT DESC
    ), B2.CLASS_DT) AS FALLBACK_CLASS_DT
FROM TBL_A AS A
LEFT JOIN (SELECT B.CLASS_ID, MIN(B.CLASS_DT) AS CLASS_DT
           FROM TBL_B AS B
           GROUP BY B.CLASS_ID) AS B2 ON B2.CLASS_ID = A.CLASS_ID
WHERE A.CLASS_ID = 358614  
ORDER BY A.PERIOD_DT DESC;

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

모든 행에없는 속성을 가진 사용자에 대한 데이터 가져 오기 -sql

분류에서Dev

데이터를 찾을 수없는 경우 이전 값 가져 오기

분류에서Dev

SQL-제한 1 인 경우 여러 값 가져 오기

분류에서Dev

키가 사전에서 사용 가능한 경우에만 데이터 가져 오기

분류에서Dev

angular.js 및 PHP를 사용하여 데이터베이스에 값이없는 경우에도 테이블에 여러 행 가져 오기

분류에서Dev

쿼리에 null 값이있는 경우 Linq 가져 오기 사용

분류에서Dev

가능한 경우 별칭을 사용하여 정규화 된 가져 오기

분류에서Dev

하나의 값이 NULL 인 경우 데이터 가져 오기

분류에서Dev

가능한 값 목록에서 나머지 값 가져 오기 (가능한 경우 인라인)

분류에서Dev

Transact-SQL : 데이터가 관련되지 않은 경우 조회 값의 ID 가져 오기

분류에서Dev

Xslt를 사용하여 null이 아닌 경우 노드 및 값 가져 오기

분류에서Dev

JSON 개체에서 사용 가능한 링크 가져 오기

분류에서Dev

가장 큰 값이 SQL에서 사용할 수없고 null 값을 반환하지 않는 경우에만 두 번째 최대 수를 가져옵니다.

분류에서Dev

SQL Server 데이터베이스에서 가져 오는 데이터 값 변경

분류에서Dev

검색에 사용할 수있는 개체가 하나 뿐인 경우 Django ORM에서 필터 대 성능 가져 오기

분류에서Dev

장고 양식에서 값을 가져 오기 및 SQL에서 데이터를 찾는 데 사용할

분류에서Dev

jQuery를 사용하여 객체에서 데이터 값 가져 오기

분류에서Dev

속성이없는 경우 노드 값 가져 오기

분류에서Dev

자식이없는 경우 SimpleXMLIterator에서 값 가져 오기

분류에서Dev

EF Core 3.1을 사용하는 SQL Server 시퀀스에 대한 "NEXT VALUE FOR"가져 오기-불가능합니까?

분류에서Dev

사용자가 액세스 할 수없는 경우 Pickerview에서 값 가져 오기

분류에서Dev

하나의 가져 오기 대신 여러 가져 오기를 사용하는 경우 성능 비용이 있습니까?

분류에서Dev

SQL Server 오류 가져 오기 : "데이터베이스에 '<my table>'이라는 개체가 이미 있습니다."테이블이 데이터베이스에없는 경우

분류에서Dev

SQL-열이 널인 경우 다른 테이블에서 값 가져 오기

분류에서Dev

ssrs- "사용 가능한 값"이 설정된 경우 "기본값"을 설정할 수 없습니다.

분류에서Dev

변경 불가능한 값에는 변경 멤버를 사용할 수 없습니다. 'subviews'는 가져 오기 전용 속성입니다.

분류에서Dev

가져온 역할이 실패한 경우 기본값으로 변수 사용

분류에서Dev

체크 된 경우 종이 체크 박스에서 값 가져 오기

분류에서Dev

SQL 누계에 대한 이전 행 값 가져 오기

Related 관련 기사

  1. 1

    모든 행에없는 속성을 가진 사용자에 대한 데이터 가져 오기 -sql

  2. 2

    데이터를 찾을 수없는 경우 이전 값 가져 오기

  3. 3

    SQL-제한 1 인 경우 여러 값 가져 오기

  4. 4

    키가 사전에서 사용 가능한 경우에만 데이터 가져 오기

  5. 5

    angular.js 및 PHP를 사용하여 데이터베이스에 값이없는 경우에도 테이블에 여러 행 가져 오기

  6. 6

    쿼리에 null 값이있는 경우 Linq 가져 오기 사용

  7. 7

    가능한 경우 별칭을 사용하여 정규화 된 가져 오기

  8. 8

    하나의 값이 NULL 인 경우 데이터 가져 오기

  9. 9

    가능한 값 목록에서 나머지 값 가져 오기 (가능한 경우 인라인)

  10. 10

    Transact-SQL : 데이터가 관련되지 않은 경우 조회 값의 ID 가져 오기

  11. 11

    Xslt를 사용하여 null이 아닌 경우 노드 및 값 가져 오기

  12. 12

    JSON 개체에서 사용 가능한 링크 가져 오기

  13. 13

    가장 큰 값이 SQL에서 사용할 수없고 null 값을 반환하지 않는 경우에만 두 번째 최대 수를 가져옵니다.

  14. 14

    SQL Server 데이터베이스에서 가져 오는 데이터 값 변경

  15. 15

    검색에 사용할 수있는 개체가 하나 뿐인 경우 Django ORM에서 필터 대 성능 가져 오기

  16. 16

    장고 양식에서 값을 가져 오기 및 SQL에서 데이터를 찾는 데 사용할

  17. 17

    jQuery를 사용하여 객체에서 데이터 값 가져 오기

  18. 18

    속성이없는 경우 노드 값 가져 오기

  19. 19

    자식이없는 경우 SimpleXMLIterator에서 값 가져 오기

  20. 20

    EF Core 3.1을 사용하는 SQL Server 시퀀스에 대한 "NEXT VALUE FOR"가져 오기-불가능합니까?

  21. 21

    사용자가 액세스 할 수없는 경우 Pickerview에서 값 가져 오기

  22. 22

    하나의 가져 오기 대신 여러 가져 오기를 사용하는 경우 성능 비용이 있습니까?

  23. 23

    SQL Server 오류 가져 오기 : "데이터베이스에 '<my table>'이라는 개체가 이미 있습니다."테이블이 데이터베이스에없는 경우

  24. 24

    SQL-열이 널인 경우 다른 테이블에서 값 가져 오기

  25. 25

    ssrs- "사용 가능한 값"이 설정된 경우 "기본값"을 설정할 수 없습니다.

  26. 26

    변경 불가능한 값에는 변경 멤버를 사용할 수 없습니다. 'subviews'는 가져 오기 전용 속성입니다.

  27. 27

    가져온 역할이 실패한 경우 기본값으로 변수 사용

  28. 28

    체크 된 경우 종이 체크 박스에서 값 가져 오기

  29. 29

    SQL 누계에 대한 이전 행 값 가져 오기

뜨겁다태그

보관