0
안녕하세요 저는 5 개의 내부 조인과 하나씩 줄이는 where 절이있는 CTE를 가지고 있습니다. 샘플 코드는 다음과 같습니다. 그러나 실제 코드는 더 복잡한 논리를 가지고있다.여러 노동 조합을 cte로 피하십시오
;With CTE_EG AS
(
select *,
-1 as offset from a
inner join a1 on a1.id=a.id
inner join a2 on a1.id=a2.id
inner join a3 on a1.id=a3.id
where a1.offset = a2.quarter-1
union all
select *,
-2 as offset from a
inner join a1 on a1.id=a.id
inner join a2 on a1.id=a2.id
inner join a3 on a1.id=a3.id
where a1.offset = a2.quarter-2
union all
...
)
이것은 오프셋 -4와 a1.offset = a2.quarter-4까지 반복된다. 하나의 where 절 값에 대해 동일한 코드를 여러 번 반복하지 않으려면 어떻게해야합니까? 실제 쿼리에는 5 개의 내부 조인과 총 5 개의 합집합이 있습니다. 일부 계산 불일치로 생성되므로 공용체를 모두 제거 할 수 없습니다. 정수 값 n을 전달할 때와 같은 것을 원합니다. 합집합 사이의 선택 항목은 a1.offset = a2.quarter-2에서 a1.offset = a2.quarter-n과 같이 변경되는 where 절로 반복해야합니다.
을 제안하십시오.