Tuesday, 12 May 2020

SQL Sever LOOP


select a.Customer_id
,'201801' as month_id
,b.segment_final
,case
when c.cussince < '20180101' then 'Existing'
else 'New'
end Cus_type
,SUM (a.NOTRANS_1M) no_tran
from [DC-ACI-DB].MONTHLY.dbo.CURRACCOUNT_201801 a
left join [DC-ACI-DB].MONTHLY.dbo.BUDGET2020_CUS_SEGMENT_201907 b
on a.Customer_id= b.cusid
left join [DC-ACI-DB].ACI_Common.dbo.customers_dwh c
on a.Customer_id= c.cusid
group by a.Customer_id
,b.segment_final
,case
when c.cussince < '20180101' then 'Existing' else 'New' end

----------------------------------------------------------------------------
drop TABLE #TMP_CAS_0712
CREATE TABLE #TMP_CAS_0712
(
CUSID VARCHAR(20),
MONTH_ID VARCHAR(20),
segment_final VARCHAR(20),
custype VARCHAR(20),
no_trans float

)

DECLARE @TU_NGAY VARCHAR(20)
DECLARE @DEN_NGAY VARCHAR(20)
DECLARE @TBL_TOI VARCHAR(1000)

SET @TU_NGAY = '201807'
SET @DEN_NGAY = '201812'
WHILE @TU_NGAY <= @DEN_NGAY
BEGIN
PRINT @TU_NGAY
SET @TBL_TOI = '[DC-ACI-DB].MONTHLY.dbo.CURRACCOUNT_' + @TU_NGAY
PRINT @TBL_TOI
EXEC
('
INSERT INTO #TMP_CAS_0712(CUSID, MONTH_ID, segment_final,custype,no_trans)
SELECT a.Customer_id
,'+@TU_NGAY+' as month_id
,b.segment_final
,case when c.cussince < ''20180101'' then ''Existing''
else ''New''
end Cus_type
,SUM (a.NOTRANS_1M) no_tran
from '+@TBL_TOI+' a
LEFT JOIN [DC-ACI-DB].MONTHLY.dbo.BUDGET2020_CUS_SEGMENT_201907 b
ON a.Customer_id= b.cusid
LEFT JOIN [DC-ACI-DB].ACI_Common.dbo.customers_dwh c
ON a.Customer_id= c.cusid
GROUP BY a.Customer_id
,b.segment_final
,case when c.cussince < ''20180101'' then ''Existing'' else ''New'' end
')
SET @TU_NGAY = CONVERT(VARCHAR(6), DATEADD(MONTH,1,@TU_NGAY + '01'),112)
END
SELECT *
INTO ANL.dbo.PHU_CASA_BUONBUON_0712
FROM #TMP_CAS_0712;

---------------------------------------------
CREATE TABLE #TMP_CAS_0712
(
CUSID VARCHAR(20),
MONTH_ID VARCHAR(20),
segment_final VARCHAR(20),
custype VARCHAR(20),
no_trans float

)

DECLARE @TU_NGAY VARCHAR(20)
DECLARE @DEN_NGAY VARCHAR(20)
DECLARE @TBL_TOI VARCHAR(1000)

SET @TU_NGAY = '201807'
SET @DEN_NGAY = '201812'
WHILE @TU_NGAY <= @DEN_NGAY
BEGIN
PRINT @TU_NGAY
SET @TBL_TOI = '[DC-ACI-DB].MONTHLY.dbo.CURRACCOUNT_' + @TU_NGAY
PRINT @TBL_TOI
EXEC
('
INSERT INTO #TMP_CAS_0712(CUSID, MONTH_ID, segment_final,custype,no_trans)
SELECT a.Customer_id
,'+@TU_NGAY+' as month_id
,b.segment_final
,case when c.cussince < ''20180101'' then ''Existing''
else ''New''
end Cus_type
,SUM (a.NOTRANS_1M) no_tran
from '+@TBL_TOI+' a
LEFT JOIN [DC-ACI-DB].MONTHLY.dbo.BUDGET2020_CUS_SEGMENT_201907 b
ON a.Customer_id= b.cusid
LEFT JOIN [DC-ACI-DB].ACI_Common.dbo.customers_dwh c
ON a.Customer_id= c.cusid
GROUP BY a.Customer_id
,b.segment_final
,case when c.cussince < ''20180101'' then ''Existing'' else ''New'' end
')
SET @TU_NGAY = CONVERT(VARCHAR(6), DATEADD(MONTH,1,@TU_NGAY + '01'),112)
END
SELECT *
INTO ANL.dbo.PHU_CASA_BUONBUON_0712
FROM #TMP_CAS_0712;

----------------------------
SELECT month_id, count (distinct cusid)
FROM ANL.dbo.PHU_CASA_BUONBUON_071218 group by month_id
--------------------------------------------------------------

CREATE TABLE #TMP_CAS_010619
(
CUSID VARCHAR(20),
MONTH_ID VARCHAR(20),
segment_final VARCHAR(20),
custype VARCHAR(20),
no_trans float

)

DECLARE @TU_NGAY VARCHAR(20)
DECLARE @DEN_NGAY VARCHAR(20)
DECLARE @TBL_TOI VARCHAR(1000)

SET @TU_NGAY = '201901'
SET @DEN_NGAY = '201906'
WHILE @TU_NGAY <= @DEN_NGAY
BEGIN
PRINT @TU_NGAY
SET @TBL_TOI = '[DC-ACI-DB].MONTHLY.dbo.CURRACCOUNT_' + @TU_NGAY
PRINT @TBL_TOI
EXEC
('
INSERT INTO #TMP_CAS_010619(CUSID, MONTH_ID, segment_final,custype,no_trans)
SELECT a.Customer_id
,'+@TU_NGAY+' as month_id
,b.segment_final
,case when c.cussince < ''20190101'' then ''Existing''
else ''New''
end Cus_type
,SUM (a.NOTRANS_1M) no_tran
from '+@TBL_TOI+' a
LEFT JOIN [DC-ACI-DB].MONTHLY.dbo.BUDGET2020_CUS_SEGMENT_201907 b
ON a.Customer_id= b.cusid
LEFT JOIN [DC-ACI-DB].ACI_Common.dbo.customers_dwh c
ON a.Customer_id= c.cusid
GROUP BY a.Customer_id
,b.segment_final
,case when c.cussince < ''20190101'' then ''Existing'' else ''New'' end
')
SET @TU_NGAY = CONVERT(VARCHAR(6), DATEADD(MONTH,1,@TU_NGAY + '01'),112)
END
SELECT *
INTO ANL.dbo.PHU_CASA_BUONBUON_010619
FROM #TMP_CAS_010619;

select month_id, count(distinct cusid) from ANL.dbo.PHU_CASA_BUONBUON_010619 group by month_id ;

select cusid, min_start_date from [DC-ACI-DB].ACI_Echannel.[dbo].[cus_ebank_20190930];

SELECT * FROM ANL.DBO.CUS_ALL_MASK WHERE CUSID ='33725918'

select * from [DC-ACI-DB].[aci_COMMON].