MS ACCESS GROUP BY 질문 드립니다 (두번째 큰 값) 0 2 606

by 김레골라스 [SQL Query] [2021.03.04 14:21:12]


안녕하세요 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 = '수리' 인 항목의 두번 째 큰 값을 가져오고 싶은데 어찌해야 할까요

고수 분들의 답변 기다리겠습니다 :) 

 

감사합니다.

 

by 마농 [2021.03.04 15:23:28]
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
;

 


by 김레골라스 [2021.03.04 16:57:07]

선생님 감사합니다 :)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입