반응형
루프 내의 크로스 테이블
이 테이블이 두 개 있어요.
Item Mov
Item Date
A 2018-03-31
A 2018-03-30
A 2018-03-25
B 2018-03-28
B 2018-03-29
및 날짜 테이블
Date
2018-03-31
2018-03-30
2018-03-29
2018-03-28
2018-03-27
2018-03-26
2018-03-25
제가 필요로 하는 것은 그 두 가지 사이에 일종의 교차상품이 있는데, 각 아이템의 가장 오래된 날짜로 한정되어 있습니다.처음에는 심플한 크로스 제품을 사용했습니다.
select distinct t.Item, f.Date from ItemMov t cross join DateTable f
이것을 받다
Item Date
A 2018-03-31
A 2018-03-30
A 2018-03-29
A 2018-03-28
A 2018-03-27
A 2018-03-26
A 2018-03-25
B 2018-03-31
B 2018-03-30
B 2018-03-29
B 2018-03-28
B 2018-03-27
B 2018-03-26
B 2018-03-25
물론 이 건널목은 B와 같은 일부 품목의 경우 첫 번째 날짜보다 일찍 날짜를 가져옵니다.원하는 출력은 이와 비슷해야 하지만 각 항목의 최소(날짜)로 제한됩니다.그렇다면 크로스 테이블에서 이 작업을 수행하는 이유나 루프를 사용해야 하는 이유가 있을까요?
바람직한 출력
Item Date
A 2018-03-31
A 2018-03-30
A 2018-03-29
A 2018-03-28
A 2018-03-27
A 2018-03-26
A 2018-03-25
B 2018-03-31
B 2018-03-30
B 2018-03-29
B 2018-03-28
예를 들어join
와 함께on
절 날짜 식:
select distinct t.Item, f.Date
from ItemMov t
inner join DateTable f on t.Date <= f.Date
-- cross join DateTable f on t.Date <= f.Date
order by t.Item, f.Date desc
다음 작업을 수행하기 전에 집약할 수 있습니다.join
:
select i.item, d.date
from (select i.item, min(date) as min_date, max(date) as max_date
from itemmov i
group by i.item
) i join
datetable d
on d.date >= i.min_date and d.date <= i.max_date
order by i.item, d.date;
언급URL : https://stackoverflow.com/questions/56006764/cross-tables-in-a-loop
반응형
'programing' 카테고리의 다른 글
세션의 차이점은 무엇입니까?persist()와 session.save()는 휴지 상태입니까? (0) | 2022.09.30 |
---|---|
목록에 중복 제거 (0) | 2022.09.30 |
Gradle에서 소스 JAR을 구축하는 방법 (0) | 2022.09.30 |
두 개의 컨테이너(nginx와 mariadb)를 사용하여 도커와 드루팔을 셋업하다 (0) | 2022.09.30 |
PHP에서 타임스탬프를 시간 전으로 변환하는 중(예: 1일 전, 2일 전)... (0) | 2022.09.30 |