안녕하세요 MS ACCESS로 sql활용하다 질문생겨 질문드립니다.
cNo | Ins | Model | Manuf |
001 | aa | aaa | AA |
002 | bb | bbb | BB |
기본적인 장비들의 목록이 있는 t1
cNo | Dates | Remarks |
001 | 2020-10-20 | 입고 |
001 | 2021-01-05 | 수리 |
002 | 2021-01-10 | 입고 |
002 | 2021-02-05 | 수리 |
002 | 2021-02-10 | 수리 |
누적해서 장비들의 이벤트(입고, 수리 등)들을 기록하는 t2 가 있습니다.
위 두개의 table을 활용하여
cNo | Ins | Model | Manuf | 입고 | 수리 |
001 | aa | aaa | AA | 2020-10-20 | 2021-01-05 |
002 | bb | bbb | BB | 2021-02-05 | 2021-02-10 |
SELECT
t1.cNo, t1.Ins, t1.Model, t1.Manuf,
MAX(IIF(t2.Remarks = '입고', t2.Dates)) AS 입고,
MAX(IIF(t2.Remarks = '수리;, t2.Dates)) AS 수리
FROM
t1. LEFT JOIN t2 ON t1.cNo = t2.cNo
GROUP BY
t1.cNo,
t1.Ins,
t1.Model,
t1.Manuf
;
이렇게 하여 날짜의 최신정보를 가져오게 활용 중인데,
새로운 col (AS 이전수리)에 t2.Remarks = '수리' 인 항목의 두번 째 큰 값을 가져오고 싶은데 어찌해야 할까요
고수 분들의 답변 기다리겠습니다 :)
감사합니다.
WITH t1 AS ( SELECT '001' cNo, 'aa' Ins, 'aaa' Model, 'AA' Manuf UNION ALL SELECT '002', 'bb', 'bbb', 'BB' ) , t2 AS ( SELECT '001' cNo, '2020-10-20' Dates, '입고' Remarks UNION ALL SELECT '001', '2021-01-05', '수리' UNION ALL SELECT '002', '2021-01-10', '입고' UNION ALL SELECT '002', '2021-02-05', '수리' UNION ALL SELECT '002', '2021-02-10', '수리' ) -- MariaDB 10.4 에서 테스트 -- SELECT a.cNo, a.Ins, a.Model, a.Manuf , MAX(IF(b.Remarks = '입고', b.Dates, null)) AS 입고 , MAX(IF(b.Remarks = '수리', b.Dates, null)) AS 수리 , MAX(IF(c.Remarks = '수리', c.Dates, null)) AS 이전수리 FROM t1 a LEFT JOIN t2 b ON a.cNo = b.cNo LEFT JOIN t2 c ON b.cNo = c.cNo AND b.Remarks = c.Remarks AND b.Dates > c.Dates GROUP BY a.cNo, a.Ins, a.Model, a.Manuf ;