여러행을 하나의 행으로 묶는법이요.... 0 8 639

by 푸른구루미 [SQL Query] [2019.02.21 16:02:37]


temp.JPG (41,935Bytes)

결과가 

기록시간    이름    사과    배    포도    감      귤    딸기

....             강정희 10.9   250   13.1     1.11   30.2

...              고중숙 14.0    91

....             공필자  12.0           11.5     0.97   26.1

 

이런식으로 기록시간이란 이름을 group by 해서

여러행의 로우를 하나로 묶고 싶습니다.

rank 쓰면 될것같은데 감을 못잡겠네요ㅠㅠㅠㅠ

by 마농 [2019.02.21 16:23:27]

1. 하나로 합치는 방법은
  - GROUP BY 기록시간, 이름
  - MIN(사과) 사과
2. 그런데... 올려주신 이미지가?
  - 실제 테이블 내역 인가요?
  - 쿼리 수행 결과 인가요?


by 푸른구루미 [2019.02.21 16:35:58]

1.group by 에 min을 쓰면 되는가요?? 한번해보겠습니다.

2. 쿼리수행결과입니다.


by 마농 [2019.02.21 16:44:36]

1. 쿼리 중간결과를 보여주시는 것보다는
 - 원본 내역을 보여주시는게 좋구요.
 - 중간결과를 보여주려면 작성 쿼리도 함께 보여주세요.
2. 동일인의 기록시간이 약간 차이가 나는데?
 - 이부분을 어떤 기준으로 합치는지?
 - 결과표에 기록시간이 어떤 형태로 표현되어야 하는지?


by 푸른구루미 [2019.02.21 16:55:54]

1. 쿼리는 개인적인 사정으로 보여드리가 어렵습니다...죄송합니다.....ㅠ

select 를 두번정도 묶어서 한 쿼리입니다......

2. group by 에 min을 쓰니 그룹함수는 허가되지 않습니다.라고 나오네요....ㅠㅠ

기록시간이 다르면 기록시간이랑 이름이 따로묶여 분리된값이나와야합니다.


by 마농 [2019.02.21 17:05:22]

실제쿼리의 컬럼명 테이블명 등을 바꿔서 보여주시면 됩니다.
아니면 원본 대비 결과표 보여주시면 되구요.
Group by 에 min 을 썼다는 표현만 보고는 어떻게 썼는지 알 수가 없습니다.


by 푸른구루미 [2019.02.21 17:12:16]

결과가 

기록시간                      이름    사과    배    포도    감      귤    딸기

20180401093319           강정희                  13.1     1.11   30.2

20180401093323           강정희  10.9   250   

20180401081235           고종숙  14.0    91

20180401232716           공필자                  11.5     0.97   26.1

20180401232728           공필자  12.0 

이렇게 나오기를 원합니다.

쿼리는 정말죄송합니다.

도움주시는데ㅠㅠㅠ 답변이 힘드시면 여기까지 하겠습니다.


by 마농 [2019.02.21 17:22:38]

쿼리 보여주기 어려우면 원본 대비 결과표 보여주시면 됩니다.
그런데 원본이 없이 결과만 있네요?
원본 추측해서 답변 드립니다.

WITH t AS
(
SELECT '20180401093319' reg_dt, '강정희' nm, '포도' cd, 13.10 v FROM dual
UNION ALL SELECT '20180401093319', '강정희', '감'  ,   1.11 FROM dual
UNION ALL SELECT '20180401093319', '강정희', '귤'  ,  30.20 FROM dual
UNION ALL SELECT '20180401093323', '강정희', '사과',  10.90 FROM dual
UNION ALL SELECT '20180401093323', '강정희', '배'  , 250.00 FROM dual
UNION ALL SELECT '20180401081235', '고중숙', '사과',  14.00 FROM dual
UNION ALL SELECT '20180401081235', '고중숙', '배'  ,  91.00 FROM dual
UNION ALL SELECT '20180401232716', '공필자', '포도',  11.50 FROM dual
UNION ALL SELECT '20180401232716', '공필자', '감'  ,   0.97 FROM dual
UNION ALL SELECT '20180401232716', '공필자', '귤'  ,  26.10 FROM dual
UNION ALL SELECT '20180401232728', '공필자', '사과',  12.00 FROM dual
)
SELECT reg_dt
     , nm
     , SUM(DECODE(cd, '사과', v)) 사과
     , SUM(DECODE(cd, '배'  , v)) 배
     , SUM(DECODE(cd, '포도', v)) 포도
     , SUM(DECODE(cd, '감'  , v)) 감
     , SUM(DECODE(cd, '귤'  , v)) 귤
     , SUM(DECODE(cd, '딸기', v)) 딸기
  FROM t
 GROUP BY nm, reg_dt
 ORDER BY nm, reg_dt
;

 


by 푸른구루미 [2019.02.22 09:57:42]

감사합니다.

불성실한 질문에도 친철히 답변주셔서 덕분에 해결했습니다.

정말감사합니다.

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