Skip to content

Instantly share code, notes, and snippets.

@handuy
Last active June 17, 2020 04:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save handuy/4566472350d27c22945c314aed2f1db1 to your computer and use it in GitHub Desktop.
Save handuy/4566472350d27c22945c314aed2f1db1 to your computer and use it in GitHub Desktop.
-- Cập nhật cột SomayHVN_mapping ở bảng registration
update top (100) registration_2018 set SomayHVN_mapping = 'JF86E0036270'
update top (100) registration_2019 set SomayHVN_mapping = 'JF86E0036270'
-- Tạo bảng trung gian
create table report_1de (
DEALER_CODE varchar(50),
deliver_tinh varchar(50),
Arrival_month int,
Arrival_year int,
Engine varchar(50),
SomayHVN_mapping varchar(50),
category varchar(50),
Maker_final varchar(50),
Model_final varchar(50),
sale_tinh varchar(50),
thang int,
nam int
)
-- Thêm dữ liệu
insert into report_1de
SELECT *
FROM
(
select deliver_2018.DEALER_CODE, map_tinh.Tinh, deliver_2018.Arrival_month, deliver_2018.Arrival_year, deliver_2018.Engine
from Delivery_raw.dbo.Deliver_raw2018 AS deliver_2018
left join Delivery_raw.dbo.map_tinh AS map_tinh on deliver_2018.DEALER_CODE = map_tinh.Code
) delivery
JOIN
(
select SomayHVN_mapping, category, Maker_final, Model_final, tinh, thang, nam
from registration_raw.dbo.registration_raw2018 AS registration_2018
union all
select SomayHVN_mapping, category, Maker_final, Model_final, tinh, thang, nam
from registration_raw.dbo.registration_raw2019 registration_2019
) sale
on delivery.Engine = sale.SomayHVN_mapping
insert into report_1de
SELECT *
FROM
(
select deliver_2018.DEALER_CODE, map_tinh.Tinh, deliver_2018.Arrival_month, deliver_2018.Arrival_year, deliver_2018.Engine
from deliver_2018 left join map_tinh on deliver_2018.DEALER_CODE = map_tinh.Code
union all
select deliver_2019.DEALER_CODE, map_tinh.Tinh, deliver_2019.Arrival_month, deliver_2019.Arrival_year, deliver_2019.Engine
from deliver_2019 left join map_tinh on deliver_2019.DEALER_CODE = map_tinh.Code
) delivery
JOIN
(
select SomayHVN_mapping, category, Maker_final, Model_final, tinh, thang, nam
from registration_2018
union all
select SomayHVN_mapping, category, Maker_final, Model_final, tinh, thang, nam
from registration_2019
) sale
on delivery.Engine = sale.SomayHVN_mapping
where delivery.Engine = 'JF86E0036270'
----------------------------------------- Phụ lục 1D ----------------------------------------------------
-- Query báo cáo 1D - Table 4
SELECT *
FROM
(
select DEALER_CODE, deliver_tinh, Arrival_month, Arrival_year, count(1) AS allo_quantity
from report_1de_new
--where DEALER_CODE = 10001
group by DEALER_CODE, deliver_tinh, Arrival_month, Arrival_year
--order by Arrival_year, Arrival_month, deliver_tinh
) AS deliver_info
left join
(
select DEALER_CODE, Arrival_month, Arrival_year, sale_tinh, thang, nam, count(1) AS sale_amount_in_tinh
from report_1de_new
--where DEALER_CODE = 10001
group by DEALER_CODE, Arrival_month, Arrival_year, sale_tinh, thang, nam
-- order by Arrival_month, Arrival_year, sale_tinh, nam, thang
) AS sale_info
ON deliver_info.DEALER_CODE = sale_info.DEALER_CODE and deliver_info.Arrival_month = sale_info.Arrival_month
and deliver_info.Arrival_year = sale_info.Arrival_year
--where deliver_tinh = 'Ha Noi'
order by deliver_info.DEALER_CODE, deliver_info.Arrival_year, deliver_info.Arrival_month, deliver_tinh, sale_tinh, nam, thang
-- Query báo cáo 1D - Table 5
SELECT *
FROM
(
select deliver_tinh, Arrival_month, Arrival_year, count(1) AS allo_quantity
from report_1de_new
--where DEALER_CODE = 10001
group by deliver_tinh, Arrival_month, Arrival_year
--order by Arrival_year, Arrival_month, deliver_tinh
) AS deliver_info
left join
(
select Arrival_month, Arrival_year, deliver_tinh, CASE WHEN sale_tinh = deliver_tinh then sale_tinh else 'Other' end AS tinh,
thang, nam, count(1) AS sale_amount_in_tinh
from report_1de_new
--where DEALER_CODE = 10001
group by Arrival_month, Arrival_year, deliver_tinh, CASE WHEN sale_tinh = deliver_tinh then sale_tinh else 'Other' end, thang, nam
-- order by Arrival_month, Arrival_year, sale_tinh, nam, thang
) AS sale_info
ON deliver_info.deliver_tinh = sale_info.deliver_tinh and deliver_info.Arrival_month = sale_info.Arrival_month
and deliver_info.Arrival_year = sale_info.Arrival_year
--where deliver_info.deliver_tinh = 'Ha Noi'
order by deliver_info.Arrival_year, deliver_info.Arrival_month, deliver_info.deliver_tinh, nam, thang, sale_info.tinh
-- Query báo cáo 1D - Table 6
SELECT *
FROM
(
select DEALER_CODE, deliver_tinh, Arrival_month, Arrival_year, count(1) AS allo_quantity
from report_1de_new
--where DEALER_CODE = 10001
group by DEALER_CODE, deliver_tinh, Arrival_month, Arrival_year
--order by Arrival_year, Arrival_month, deliver_tinh
) AS deliver_info
left join
(
select DEALER_CODE, Arrival_month, Arrival_year, CASE WHEN sale_tinh = deliver_tinh then sale_tinh else 'Other' end AS tinh,
thang, nam, count(1) AS sale_amount_in_tinh
from report_1de_new
--where DEALER_CODE = 10001
group by DEALER_CODE, Arrival_month, Arrival_year, CASE WHEN sale_tinh = deliver_tinh then sale_tinh else 'Other' end, thang, nam
-- order by Arrival_month, Arrival_year, sale_tinh, nam, thang
) AS sale_info
ON deliver_info.DEALER_CODE = sale_info.DEALER_CODE and deliver_info.Arrival_month = sale_info.Arrival_month
and deliver_info.Arrival_year = sale_info.Arrival_year
--where deliver_tinh = 'Ha Noi'
order by deliver_info.DEALER_CODE, deliver_info.Arrival_year, deliver_info.Arrival_month, deliver_tinh, tinh, nam, thang
----------------------------------------- Hết 1D ----------------------------------------------------
-------------------------------------------- Phụ lục 1E --------------------------------------------------------
-- Thêm cột sale_quan vào bảng report_1de
alter table report_1de add sale_quan int
-- Update các giá trị random integer cho cột sale_quan
UPDATE report_1de
SET sale_quan = abs(checksum(NewId()) % 50)
-- Table 7
SELECT *
FROM
(
select deliver_tinh, Arrival_month, Arrival_year, count(1) AS allo_quantity
from report_1de_new
--where DEALER_CODE = 10001
group by deliver_tinh, Arrival_month, Arrival_year
--order by Arrival_year, Arrival_month, deliver_tinh
) AS deliver_info
left join
(
select Arrival_month, Arrival_year, deliver_tinh, sale_tinh, sale_quan, thang, nam, count(1) AS sale_amount_in_tinh
from report_1de_new
--where DEALER_CODE = 10001
group by Arrival_month, Arrival_year, deliver_tinh, sale_tinh, sale_quan, thang, nam
-- order by Arrival_month, Arrival_year, sale_tinh, nam, thang
) AS sale_info
ON deliver_info.deliver_tinh = sale_info.deliver_tinh and deliver_info.Arrival_month = sale_info.Arrival_month
and deliver_info.Arrival_year = sale_info.Arrival_year
--where deliver_info.deliver_tinh = 'Ha Noi' and deliver_info.Arrival_year = 2018 and deliver_info.Arrival_month = 5
order by deliver_info.Arrival_year, deliver_info.Arrival_month, deliver_info.deliver_tinh, nam, thang, sale_info.sale_tinh, sale_info.sale_quan
-- Table 8
SELECT *
FROM
(
select DEALER_CODE, deliver_tinh, count(1) AS allo_quantity
from report_1de_new
--where DEALER_CODE = 10001
group by DEALER_CODE, deliver_tinh
--order by Arrival_year, Arrival_month, deliver_tinh
) AS deliver_info
left join
(
select DEALER_CODE, deliver_tinh, sale_tinh, sale_quan, thang, nam, count(1) AS sale_amount_in_tinh
from report_1de_new
--where DEALER_CODE = 10001
group by DEALER_CODE, deliver_tinh, sale_tinh, sale_quan, thang, nam
-- order by Arrival_month, Arrival_year, sale_tinh, nam, thang
) AS sale_info
ON deliver_info.DEALER_CODE = sale_info.DEALER_CODE
--where deliver_info.DEALER_CODE = 10001
order by deliver_info.DEALER_CODE, deliver_info.deliver_tinh, nam, thang, sale_info.sale_tinh, sale_info.sale_quan
-- Table 9
SELECT *
FROM
(
select deliver_tinh, count(1) AS allo_quantity
from report_1de_new
--where deliver_tinh
group by deliver_tinh
--order by Arrival_year, Arrival_month, deliver_tinh
) AS deliver_info
left join
(
select deliver_tinh, case when sale_tinh = deliver_tinh then sale_tinh else 'Other' end as sale_tinh,
case when sale_tinh = deliver_tinh then sale_quan else -1 end as sale_quan, thang, nam, count(1) AS sale_amount_in_tinh
from report_1de_new
--where deliver_tinh
group by deliver_tinh, case when sale_tinh = deliver_tinh then sale_tinh else 'Other' end,
case when sale_tinh = deliver_tinh then sale_quan else -1 end, thang, nam
-- order by Arrival_month, Arrival_year, sale_tinh, nam, thang
) AS sale_info
ON deliver_info.deliver_tinh = sale_info.deliver_tinh
--where deliver_info.deliver_tinh = 'AN GIANG'
order by deliver_info.deliver_tinh, nam, thang, sale_info.sale_tinh, sale_info.sale_quan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment