유저번호

첫구매

가입일 

비고 

1

 20140701

 20140701

 

2

 20140702

 20140701

 

3

 20140704

 20140701

 

유저번호 

구매품목

구매가격 

구매일 

 1

 2000

 1000

 20140701

 1

 2000

 1000

 20140701

 2

 2005

 2400

 20140701

 2

 2001

 1200

 20140702

 3

 2003

 1500

 20140704

 1

 2002

 1300

 20140704

 2

 2002

 1300

 20140705

 2

 2001

 1200

 20140705

 1

 2003

 1500

 20140705


유저번호 

접속일 

 1

 20140701

 2

 20140701

 1

 20140703

 3

 20140703

 2

 20140703

 3

 20140704

 1

 20140705

 2

 20140705

 3

 20140705


위에서부터 차례대로 A, B, C의 테이블이 있습니다.

전날 접속한 사람(C테이블의 접속일 기준) 중에 접속했다면 전일에 가입했는지, 첫구매를 했는지 구매를 했는지를 검색하려고 합니다.

그래서 세 테이블을 INNER JOIN으로 묶어 검색을 하는데 금일 구매를 했는지 여부에서 막힙니다.


case문으로 DATADIFF로 조건 걸어서 전일 구매 기록이 있으면 1로 검색되도록 해놨는데 칼럼이 전부 검색됩니다. 검색해보니 MAX를 쓰면 최고값을 불러온다해서 문제는 해결될줄 알았는데 전일 시간 기록중 최고값이 아니라 칼럼 전체에서 최고값이 검색되는 것 같습니다. 3번유저를 예를 들면 4일 기록을 검색했을 때 첫구매를 했으니 첫구매고 구매 여부고 전부 1이 되어야 하는데, 첫구매여부는 1로 검색이 되지만 구매여부는 0으로 검색되고 있는거지요ㅠㅠ어떻게 조건을 줘야 검색하고 싶은 날짜에서만 검색이 될까요?


아래는 제가 쓴 구문입니다.


DECLARE @RecordDate DATE
DECLARE @Day INT
DECLARE @Date varchar(30)


SET @RecordDate = CONVERT(VARCHAR(10), GETDATE(), 111)--YYYY/MM/DD
SET @Date = CONVERT(VARCHAR(8), GETDATE(), 112)
SET @Day = DATEPART(dd, @RecordDate)


 SELECT DISTINCT
  @Date +'_'+ CONVERT(VARCHAR, A.유저번호, 30) AS RecordSID,
  @RecordDate,
   A.유저번호,
  CASE
   WHEN DATEDIFF(dd, C.접속일, @RecordDate) = 0 
                THEN 1
                ELSE 0
                END 로그인여부,
  CASE
   WHEN DATEDIFF(dd, A.가입일, @RecordDate) = 0
               THEN 1
               ELSE 0
               END 가입여부,
  CASE
   WHEN DATEDIFF(DAY, MAX(B.구입일) OVER (PARTITION BY B.유저번호), @RecordDate) = 0
               THEN 1
               ELSE 0
               END 구매여부,
  CASE
   WHEN DATEDIFF(DAY, A.첫구매일, @RecordDate) = 0
               THEN 1
               ELSE 0
               END 첫구매여부
 FROM 
유저테이블 AS A INNER JOIN  
구매테이블 AS B ON A.유저번호= B.유저번호 INNER JOIN
로그인테이블 AS C ON A.유저번호= C.유저번호
 WHERE DATEDIFF(DAY, C.접속일, @RecordDate) = 0
 GROUP BY A.유저번호, A.가입일, B.유저번호, B.구매일, C.접속일,  A.첫구매

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 604
8012 mfc access 테이블 여러개 연동 질문있습니다.. 송이송이 2014.07.07 4280
8011 WHERE절에 CASE문입니당.. [2] 마힐링 2014.07.07 2959
8010 프로시저 질문 입니다. [3] 개발자_ver 2014.07.07 2061
» inner join시 해당 날짜만 검색하고 싶습니다. [1] 사이드사이드 2014.07.07 2870
8008 행삭제가 안되네요 [3] 고쳐주세요 2014.07.07 2204
8007 케스트 사양에 대한 갑이 올바르지 않다고 뜹니다 [1] 연어초밥 2014.07.07 1925
8006 계정에 관해 질문드립니다. [2] 연어초밥 2014.07.06 5291
8005 쿼리 질문드립니다.. [3] 하하하하하 2014.07.04 2637
8004 mssql200이 설치된 웹서버에서 mssql2005 설치된 웹서버로 DB 접속문의 [2] Larry 2014.07.04 3404
8003 insert select 데이타 사라짐 [7] 연금술사 2014.07.04 4296
8002 운영중인 DB 서버의 윈도우 administrator 계정 이름 변경 [2] 내안의다른삶 2014.07.03 3111
8001 에러좀 봐주세요.... [1] 처리짱 2014.07.03 2590
8000 소수점 처리 와 컴마 표시를 동시에 할수있을까요? [2] 고구망 2014.07.03 4657
7999 안녕하세요 쿼리 질문있습니다. spotlight81 2014.07.03 2570
7998 문자열에서 숫자의 합계를 구하는데 오류가 뜹니다. [1] 사이드사이드 2014.07.03 2428
7997 TableDiff 유틸리티 사용관련해서 질문드립니다. HoyaSoft 2014.07.03 2437
7996 analysis service 관련문의 dunhill123 2014.07.03 2165
7995 비밀번호 *로 ㅜㅜ [3] 마힐링 2014.07.02 2570
7994 db와 연결이 안돼요.. [2] 송이송이 2014.07.02 2688
7993 관련된 컬럼 데이터를 레코드에 추가해서 보고싶을때 [3] Merermero 2014.07.01 2437





XE Login