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 7018 게시물 읽기
No. 7018
distinct 혹은 group by 문의
작성자
이정훈(ddingjo)
작성일
2016-12-13 13:51
조회수
3,271

 안녕하세요 

쿼리 질문좀 할게요

테이블 필드는 Idx, UserIdx, Comment, Point, DateTime 이렇게 있구요 

데이터는

1, 1, '글내용', 1000, '2016-12-10'

2, 1, '글내용', 500, '2016-12-10'

3, 2, '글내용', 800, '2016-12-10'

4, 3, '글내용', 1000, '2016-12-10'

 

이런식으로 데이터가 저장 되어 있을때 출력 결과를 아래와 같게 하고 싶습니다.

 

1, 1, '글내용', 1000, '2016-12-10'

3, 2, '글내용', 500, '2016-12-10'

4, 3, '글내용', 800, '2016-12-09'

결과에 대한 설명을 하자면 테이블의 모든 데이터를 출력하는데 UserIdx 의 값이 중복인것은 제외 하고 

출력을 할려고 합니다. 

그러니깐 회원들의 포인트 내역중에 날짜별로 딱 한개씩만 뽑아 올려고 합니다.

한 회원이 같은 날짜에 10개의 포인트 내역이 있더라도 딱 한개만 뽑을려고 합니다.

distinct 나 group by 를 사용 하면 될듯 한데 아무리 해도 해결이 되지 않네요..

답변 부탁드립니다.

이 글에 대한 댓글이 총 3건 있습니다.

 idx 1과 2중 1이 선택된 기준은요? 아무거나 상관없나요?

우욱님이 2016-12-13 15:20에 작성한 댓글입니다. Edit

 idx 1과 2중 1이 선택된것은 그냥 빠른 번호 순입니다.

distinct 나 group by 때 select * 이 안먹혀서 헤메고 있습니다.

이정훈(ddingjo)님이 2016-12-13 15:55에 작성한 댓글입니다.

대충 이런 쿼리면 될 듯 싶네요.

SELECT bb.*

FROM
(
SELECT UserIdx, DATEADD( DAY, DATEDIFF( DAY, 0, DateTime컬럼 ), 0 ) AS dt, MIN( idx ) AS minidx
FROM 해당테이블
GROUP BY UserIdx, DATEADD( DAY, DATEDIFF( DAY, 0, DateTime컬럼 ), 0 )
) AS aa
INNER JOIN 해당테이블 AS bb
ON aa.minidx = bb.idx
;
 
우욱님이 2016-12-13 17:08에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7021컬럼중 하나 이상의 값이 틀릴때만 insert 하는 묘수를 찾습니다.
김기열
2016-12-31
3150
7020DB어떻게 만들어야 할까요 ? [1]
Ham
2016-12-26
3185
7019ms-sql summary 출력 도움 부탁드립니다. [2]
개발자
2016-12-22
3373
7018distinct 혹은 group by 문의 [3]
이정훈
2016-12-13
3271
7017물품관리에서 입고 출고된것 모두 제거하고 싶습니다. [2]
빨간운동화
2016-12-13
3476
7015SQL Server Managerment Studio Express 공급자 속성 비활성화 [2]
도우덕
2016-11-23
3661
70142개의 select을 [4]
썬큐스트
2016-11-10
4088
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다