|
|
@@ -0,0 +1,102 @@
|
|
|
+/*
|
|
|
+----------------------------------------------------------------------------------
|
|
|
+◑ SP Name : dbo.USP_BAT_MAIL_DATA
|
|
|
+◑ Description : 대용량 메일 솔루션 일배치 데이터
|
|
|
+ - 회원 DB: TB_BAT_Member
|
|
|
+ - 탈퇴회원 + 휴면회원 DB: TB_BAT_MemberWithdrawal
|
|
|
+ - 회원 아이포인트: TB_BAT_MemberPoint
|
|
|
+ - 회원 아이머니 : TB_BAT_MemberMileage
|
|
|
+◑ Called by :
|
|
|
+◑ Input Parameters :
|
|
|
+◑ Output Parameters :
|
|
|
+◑ Exec :
|
|
|
+◑ Change History
|
|
|
+-----------------------------------------------------------------------------------------------
|
|
|
+Date Author Description
|
|
|
+-----------------------------------------------------------------------------------------------
|
|
|
+2013-01-21 유민호 최초생성. 배치를 돌기 하루전 데이터를 가져와 데이터를 쌓아두고, 데이터를 7일이 지난 데이터는 삭제한다
|
|
|
+2013-08-12 유민호 LinkedServer 변경 ( DB01_MALL -> [DB01.ISTYLE24.COM] )
|
|
|
+2014-01-03 김한얼 멤버, 탈퇴멤버 7일전 데이터 삭제를 전체로 바꾸고 전체를 쌓도록 한다. 추후 포인트정보도 수정해야함.
|
|
|
+2014-10-15 김한얼 TB_BAT_Member에 MemberGUID 컬럼 추가 후 Insert 할 수 있도록 쿼리 수정
|
|
|
+2015-08-26 박운용 회원DB분리로 인해, 휴면회원도 탈퇴회원 테이블에 저장
|
|
|
+2016-11-29 성근영 탈퇴 회원 테이블에 MemberGUID 추가, 포인트 정보 전체 삭제 후 하루 전 데이터만 입력
|
|
|
+2020-01-11 이선미 등록일 null 체크
|
|
|
+-----------------------------------------------------------------------------------------------
|
|
|
+*/
|
|
|
+CREATE PROCEDURE [dbo].[USP_BAT_MAIL_DATA]
|
|
|
+ AS
|
|
|
+BEGIN
|
|
|
+ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|
|
+ SET NOCOUNT ON;
|
|
|
+ SET XACT_ABORT ON;
|
|
|
+
|
|
|
+ DECLARE @CurrentDate DATETIME
|
|
|
+ SET @CurrentDate = CONVERT(DATETIME, CONVERT(NVARCHAR(10), GetDate(), 121))
|
|
|
+
|
|
|
+ /*
|
|
|
+ 1. 초기화
|
|
|
+ */
|
|
|
+ -- 회원DB: 전체 데이터 삭제
|
|
|
+ TRUNCATE TABLE dbo.TB_BAT_Member
|
|
|
+ TRUNCATE TABLE dbo.TB_BAT_MemberWithdrawal
|
|
|
+
|
|
|
+ -- 아이포인트, 아이머니: 7일전 데이터 삭제
|
|
|
+ TRUNCATE TABLE dbo.TB_BAT_MemberPoint
|
|
|
+ TRUNCATE TABLE dbo.TB_BAT_MemberMileage
|
|
|
+
|
|
|
+ /*
|
|
|
+ 2. 정보 생성
|
|
|
+ */
|
|
|
+ -- 탈퇴회원 생성
|
|
|
+ INSERT INTO dbo.TB_BAT_MemberWithdrawal WITH(ROWLOCK)
|
|
|
+ SELECT MemberGUID, LoginId, MemberName, ISNULL(DateRegister, DateWithdraw), DateWithdraw
|
|
|
+ FROM istyle24_mall.dbo.TB_PRF_MemberWithdrawal WITH (NOLOCK)
|
|
|
+
|
|
|
+ -- 휴면계정도 탈퇴회원으로 생성
|
|
|
+ INSERT INTO dbo.TB_BAT_MemberWithdrawal WITH(ROWLOCK)
|
|
|
+ SELECT MemberGUID, LoginId, MemberName, DateRegister, DateDormant
|
|
|
+ FROM istyle24_mall.dbo.TB_PRF_MemberDormant WITH (NOLOCK)
|
|
|
+
|
|
|
+ -- 회원정보 생성 (휴면계정 제외)
|
|
|
+ INSERT INTO dbo.TB_BAT_Member WITH(ROWLOCK)
|
|
|
+ SELECT MemberGUID, LoginId, MemberName, Email, IsEmail, Gender, DefaultPostalCode, ISNULL(DateRegister, '1900-01-01') as DateRegister, DateLastModified, dbo.FN_MemebrAge(PID,isnull(BirthDate,'')) as Age
|
|
|
+ FROM iSTYLE24_Mall.dbo.TB_PRF_Member WITH (NOLOCK)
|
|
|
+ WHERE MemberName <> '휴면계정'
|
|
|
+
|
|
|
+ -- 하루전 회원 포인트 수정(회원의 최종 포인트)
|
|
|
+ INSERT INTO dbo.TB_BAT_MemberPoint WITH(ROWLOCK)
|
|
|
+ SELECT A.MemberGUID, A.loginId, B.Remains, DATEADD(DD, -1, @CurrentDate)
|
|
|
+ FROM iSTYLE24_Mall.dbo.TB_PRF_Member A WITH (NOLOCK)
|
|
|
+ INNER JOIN (
|
|
|
+ SELECT B.MemberGUID, B.Remains
|
|
|
+ FROM (
|
|
|
+ SELECT ROW_NUMBER() OVER (PARTITION BY A.MemberGUID ORDER BY A.DateCreated DESC) AS Row,
|
|
|
+ A.MemberGUID, A.Remains
|
|
|
+ FROM iSTYLE24_Mall.dbo.TB_PRF_MemberPoint A WITH (NOLOCK)
|
|
|
+ WHERE A.DateCreated between DATEADD(DD, -1, @CurrentDate) and @CurrentDate
|
|
|
+ ) AS B
|
|
|
+ WHERE B.row = 1
|
|
|
+ ) B ON A.MemberGUID = B.MemberGUID
|
|
|
+ ORDER BY A.loginId
|
|
|
+
|
|
|
+ -- 하루전 회원 마일리지 수정(회원의 최종 마일리지)
|
|
|
+ INSERT INTO dbo.TB_BAT_MemberMileage WITH(ROWLOCK)
|
|
|
+ SELECT A.MemberGUID, A.loginId, B.Remains, DATEADD(DD, -1, @CurrentDate)
|
|
|
+ FROM iSTYLE24_Mall.dbo.TB_PRF_Member A WITH (NOLOCK)
|
|
|
+ INNER JOIN (
|
|
|
+ SELECT B.MemberGUID, B.Remains
|
|
|
+ FROM (
|
|
|
+ SELECT ROW_NUMBER() OVER (PARTITION BY A.MemberGUID ORDER BY A.DateCreated DESC) AS Row,
|
|
|
+ A.MemberGUID, A.Remains
|
|
|
+ FROM iSTYLE24_Mall.dbo.TB_PRF_MemberMileage A WITH (NOLOCK)
|
|
|
+WHERE A.DateCreated between DATEADD(DD, -1, @CurrentDate) and @CurrentDate
|
|
|
+ ) AS B
|
|
|
+ WHERE B.row = 1
|
|
|
+ ) B ON A.MemberGUID = B.MemberGUID
|
|
|
+ ORDER BY A.loginId
|
|
|
+
|
|
|
+
|
|
|
+ SET NOCOUNT OFF;
|
|
|
+END
|
|
|
+
|
|
|
+
|