Blog nhằm nghiên cứu, trao đổi, học tập. Nội dung Blog gồm tập hợp những bài giảng, bài nghiên cứu, hướng dẫn biên soạn từ các giáo trình của các tác giả trong và ngoài nước.
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].
Subscribe to:
Comments (Atom)