유저번호

첫구매

가입일 

비고 

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 SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 3120
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 1951
8028 primary Key 값변경 어떻해하면좋을까요 [3] 등빛 2014.07.11 9270
8027 프로시져 속도 질문 합니다. [1] 멋도리 2014.07.11 2662
8026 조회문으로 사업자번호 유효성 검사 하는것을 할려고 하면 어찌해야 하죠?? [3] 아싸라비아콜롬비아 2014.07.11 3122
8025 업데이트 방법 문의드립니다 아수라발발타 2014.07.11 2114
8024 두개의 TABLE을 비교해서 출력하는 문제..도와주세요. [1] 강하늘_275564 2014.07.11 2912
8023 쿼리로 Trigger 나 index 생성하기 [2] 냠냠10 2014.07.10 2217
8022 linked server 오라클 프로시져 호출 문의 단하 2014.07.10 3922
8021 set no_browsetable on 에 대해 아시는 분 계신가요? 프로비 2014.07.10 2876
8020 oracle에 조인변환질문 [5] 아지라엘 2014.07.10 2888
8019 조회 속도 관련 [1] 냥냥 2014.07.09 2249
8018 인덱스 조각화 에 대한 질문 드립니다. [4] 나는짱이야 2014.07.09 2367
8017 SELECT 시 FROM [].[].[]에 관한 질문입니다. [4] 아직모자란사람 2014.07.09 2496
8016 회사에서 운영하는 웹서버에서 cafe24 호스팅 DB 연동을 위한 질문입니다. [4] Larry 2014.07.08 5829
8015 안녕하세요 간단한 빙고 쿼리 조언 부탁드립니다. [1] hsm21ss 2014.07.08 2537
8014 쿼리문 질문입니다.. [4] 아수라발발타 2014.07.08 2420
8013 mysql 복구에 대해 질문좀 할게요 ㅠㅠ 부탁드립니다 [1] Scu 2014.07.07 2497
8012 mfc access 테이블 여러개 연동 질문있습니다.. 송이송이 2014.07.07 4291
8011 WHERE절에 CASE문입니당.. [2] 마힐링 2014.07.07 2972
8010 프로시저 질문 입니다. [3] 개발자_ver 2014.07.07 2072
» inner join시 해당 날짜만 검색하고 싶습니다. [1] 사이드사이드 2014.07.07 2881





XE Login