database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7200 게시물 읽기
No. 7200
GROUP으로 묶어서 가장낮은것만 출력하고 싶어요
작성자
김우성(babokws)
작성일
2020-01-13 10:03ⓒ
2020-01-13 17:22ⓜ
조회수
467

SELECT memberno, MIN(ju), point
 FROM
(
SELECT memberno, MIN(junno) AS ju, SUM(VD_money1 - membpoint) AS point
 FROM outm_1805
GROUP BY memberno
UNION

SELECT memberno, MIN(junno) AS ju, SUM(VD_money1 - membpoint) AS point
 FROM outm_1806
GROUP BY memberno
UNION

SELECT memberno, MIN(junno) AS ju, SUM(VD_money1 - membpoint) AS point
 FROM outm_1807
GROUP BY memberno
) a

GROUP BY memberno --, point
ORDER BY memberno


memberno  ju                            point
38000379   2018-05-2810152    4834.00
38000386   2018-06-0410177  13600.00
38000416   2018-06-1210086      881.00

 

위처럼 각 TABLE 마다 memberno를 GROUP으로 묶어서 가장낮은 ju 만 찾으려고 하는데 point 를 GROUP에 포함시키면
아래처럼 모든 ju 가 출력되요

 

memberno  ju                            point
38000379   2018-05-2810152    4834.00
38000379   2018-07-2110059  28752.00
38000379   2018-06-0110217  45968.51
38000386   2018-07-0610060    4104.00
38000386   2018-06-0410177  13600.00
38000416   2018-06-1210086      881.00
38000416   2018-07-0410205    2118.32

 

point를 GROUP으로 묶지않으면 에러가 뜹니다 point 까지 출력할수있는 방법이 있나요?
 

Column 'a.point' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

이 글에 대한 댓글이 총 3건 있습니다.
SELECT memberno, ju, point
FROM (
	SELECT *, ROW_NUMBER() OVER(PARTITION BY memberno ORDER BY  ju) r
	  FROM
	 (
		 SELECT memberno, MIN(junno) AS ju, SUM(VD_money1 - membpoint) AS point
		  FROM outm_1805
		 GROUP BY memberno
		 UNION

		SELECT memberno, MIN(junno) AS ju, SUM(VD_money1 - membpoint) AS point
		  FROM outm_1806
		 GROUP BY memberno
		 UNION

		SELECT memberno, MIN(junno) AS ju, SUM(VD_money1 - membpoint) AS point
		  FROM outm_1807
		 GROUP BY memberno
	 ) a
) lst
WHERE r=1
ORDER BY memberno 

 이런 방법이 있습니다.

박인호(paerae)님이 2020-01-14 12:02에 작성한 댓글입니다.

UNION ALL 을 써야 맞습니다.
UNION ALL 과 UNION 의 차이점을 알고 적절하게 사용해야 합니다.
 

마농(manon94)님이 2020-01-14 17:19에 작성한 댓글입니다.

네~ 정말 감사드립니다 ^^  새해복 많이 받으세요 ^^

김우성(babokws)님이 2020-01-14 20:56에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7203SQL 문의 .....ㅜㅜ [2]
도와주세요ㅜㅜ
2020-02-04
464
7202마농님 글 감사 드립니다. 한번 더 혹시 봐 주실 수 있나요? [2]
도와주세요ㅜㅜ
2020-01-17
539
7201SQL 문의..... [5]
도와주세요ㅜㅜ
2020-01-16
521
7200GROUP으로 묶어서 가장낮은것만 출력하고 싶어요 [3]
김우성
2020-01-13
467
7199소숫점 자리기 함수 문의 [1]
한번 더 도와주세요ㅜㅜ
2020-01-09
464
7198가로 컬럼을 세로로 조회 하는 방법 [2]
한번 더 도와주세요ㅜㅜ
2019-12-13
540
7197도와 주세요.... 모르겠어요...ㅜㅜ [2]
도와주세요ㅜㅜ
2019-12-02
541
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.073초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다