programing

선택한 날짜보다 날짜 범위 필터 및 이력이 적은 레코드 선택

padding 2023. 9. 10. 12:00
반응형

선택한 날짜보다 날짜 범위 필터 및 이력이 적은 레코드 선택

선택한 날짜 범위 내에서 고객의 현재 잔액을 표시하고, 날짜 범위 미만의 잔액이 있으면 이전 잔액도 추가해야 합니다.

단일 쿼리 내에서 이를 달성할 수 있는 방법은 무엇입니까?지금은 왼쪽 조인으로 하고 있습니다.현재 사용 사례는 Apache Superset에서 데이터 범위만 선택하고 보고서에 날짜 필터 미만의 날짜로 현재 균형 및 이전 균형 기록이 표시되는 것입니다.

두 데이터셋 모두 동일한 엔티티에서 고객 ID에 가입되어 있습니다.이 아이디어는 고객이 지불해야 하는 모든 이전 잔액과 선택한 날짜 범위를 표시하는 것입니다.예를 들어 2023-01-01에서 2023-01-01 사이의 날짜를 선택하면 쿼리는 선택한 날짜 범위 내의 고객 잔액과 함께 2023-01-01 이전의 날짜가 표시됩니다.

SELECT *
FROM (
    SELECT *
    FROM balance
    WHERE DATE >= '2022-01-01'
        AND DATE <= '2022-01-10'
    ) A
LEFT JOIN (
    SELECT *
    FROM balance
    WHERE DATE < '2022-01-01'
    ) B ON A.customerID = B.customerID )

사실 당신은 3개의 쿼리로 그것을 하고 있습니다!Current용 1개, 이전용 1개, 결과 조합용 1개!간단한 조인으로 하나의 쿼리를 사용하여 할 수 있습니다!

SELECT *
FROM balance A
    LEFT JOIN balance B ON A.cid = B.cid
    WHERE A.DATE BETWEEN '2022-01-01' AND '2022-01-10'
        AND B.DATE < '2022-01-01'

언급URL : https://stackoverflow.com/questions/76012564/select-records-with-date-range-filter-and-history-less-than-date-selected

반응형