2 테이블 : orders
및 contragents
이 있습니다. 각 contragent에는 많은 주문이있을 수 있습니다. 각 주문에는 order_date
이 있습니다. 나는 각각의 모순점에 대한 첫 주문 날짜를 원하지만,주의 사항이 있습니다 : 주문이 180 일 이상 차이가 나는 경우, 그 것을 갭 이전에 "잊어 버려야"합니다 (따라서 갭이 고려 된 첫 번째 주문이 고려됩니다). ..Postgresql : WITH 하위 쿼리를 JOIN과 함께 사용하는 방법
code
가진 contragent에 대해 반환되는 단일 값 결과
with o1 as (
select order_date, lag(order_date) over(order by order_date ASC) as prev_order_date
from orders o
where o.contragent_code = :code
order by order_date desc)
select o1.date_debts from o1
where extract(day from o1.order_date-o1.prev_order_date)>=180 or o1.prev_order_date is null
order by order_date desc
limit 1
: "첫 번째"이를 위해
, 나는 다음과 같은 성명을 구현했습니다
하지만 은이 날짜를 반환하는 select 실행 방법을 알아낼 수 없습니다. f 또는 테이블의 모든 contragent!
내가 할 수 있었던 유일한 방법은 CREATE FUNCTION
이었지만, 프로덕션에서는 할 수 없었습니다. 어떤 조언도 매우 높이 평가됩니다!