Untitled

Anonymous
plain_text
02/06/2024 7:25 AM
41.5 KB
17
Indexable
Wholesales

----ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--Π Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²
	DROP TABLE IF EXISTS #cll
	SELECT DISTINCT 
		cl.agent_inn, 
		cl.agent_name, 
		cl.client_inn, 
		cl.client_name, 
		contract_date_begin, 
		contract_name
	INTO #cll
	FROM [DATAMARTS].[dpa].[vw_clients] cl -- справочник ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²	(с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ Π½Π° послСднюю ΠΏΡ€ΠΎΠ΄Π°ΠΆΡƒ)  

	DROP TABLE IF EXISTS #vtt
	SELECT 
		vt.client_inn, 
		vt.agent_inn, --UPD Π”ΠΎΠ±Π°Π²ΠΈΠ» Антон
		vt.contract_name, 
		vt.region, 
		CAST(MAX(vt.datetime_trn)OVER(PARTITION BY vt.client_inn,vt.contract_name) AS DATE) AS MAX_DOC_date -- для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ client_inn ΠΈ contract_name Π±Π΅Ρ€Π΅ΠΌ макс Π·Π½Π°Ρ‡ datetime_trn, приводится ΠΊ date ΠΈ назначаСтся MAX_DOC_date
	INTO #vtt
	FROM [DATAMARTS].[dpa].vw_transactions vt -- ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² 
	GROUP BY vt.datetime_trn, vt.client_inn, vt.agent_inn, vt.contract_name, vt.region

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	DROP TABLE IF EXISTS #vttr
	SELECT 
		t.client_inn, 
		t.agent_inn, --upd: t.agent_inn Π΄ΠΎΠ±Π°Π²ΠΈΠ»
		t.contract_name, 
		t.region, 
		t.MAX_DOC_date
	INTO #vttr
	FROM #vtt t
	GROUP BY t.client_inn, t.agent_inn, t.contract_name, t.region, t.MAX_DOC_date
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--ΠŸΡ€ΠΎΠ΄Π°ΠΆ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ справочника Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²

    DROP TABLE IF EXISTS #dll
	SELECT 
		cll.agent_inn, 
		cll.agent_name, 
		vttr.client_inn, 
		cll.client_name, 
		vttr.region,
		cll.contract_name, 
		CAST(cll.contract_date_begin AS DATE) AS MIN_DOC_date, 
		vttr.MAX_DOC_date
	INTO #dll
	FROM #vttr vttr 
	LEFT JOIN #cll cll
	ON CONCAT(cll.client_inn,cll.contract_name)=CONCAT(vttr.client_inn,vttr.contract_name)
	GROUP BY cll.agent_inn, cll.agent_name, vttr.client_inn, cll.client_name, vttr.region,
	cll.contract_name, cll.contract_date_begin, vttr.MAX_DOC_date

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 --Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ½Π½ ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΌΠ΅Π»ΠΊΠΎΠ³ΠΎ ΠΎΠΏΡ‚Π° ΠΈΠ· [GPN_WHOLESALE_TRANSACTIONS] Π·Π° 2023 Π³ΠΎΠ΄ 
 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--SELECT TOP 5 * FROM [DATAMARTS].[FINAL].[GPN_WHOLESALE_TRANSACTIONS] WHERE GOD = '2024'

--SELECT DISTINCT KANAL_PRODAZH_VYVERENNYJ FROM [DATAMARTS].[FINAL].[GPN_WHOLESALE_TRANSACTIONS] -- Ρ€ΠΎΠ·Π½ΠΈΡ†Π°, ΠΌΠ΅Π»ΠΊΠΈΠΉ ΠΎΠΏΡ‚
--SELECT DISTINCT TIP_NEFTEPRODUKTA FROM [DATAMARTS].[FINAL].[GPN_WHOLESALE_TRANSACTIONS] -- Π±Π΅Π½Π·ΠΈΠ½, Π΄Ρ‚, ΠΏΡ€ΠΎΡ‡Π΅Π΅, суг


	DROP TABLE IF EXISTS #wh;
	SELECT 
		wt.INN AS client_inn,
		wt.NAIMENOVANIEKONTRAGENTAVYVERENNOE AS client_name,
		wt.SALES_CONTRACT_NUMBER AS contract_number,
		wt.DATA_REALIZACII AS date_operation,
		wt.DOKUMENT_REGISTRATOR AS doc_reg_number,
		MAX(wt.DATA_REALIZACII)OVER(PARTITION BY wt.INN, wt.SALES_CONTRACT_NUMBER) AS MAX_DOC_DATE_MO
	INTO #wh
	FROM [DATAMARTS].[FINAL].[GPN_WHOLESALE_TRANSACTIONS] wt
	WHERE wt.KANAL_PRODAZH_VYVERENNYJ = '2.МСлкий ОПВ' and GOD='2023' AND KOLICHESTVO_TN > 0
	GROUP BY INN, NAIMENOVANIEKONTRAGENTAVYVERENNOE, SALES_CONTRACT_NUMBER, DATA_REALIZACII, DOKUMENT_REGISTRATOR

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	
	DROP TABLE IF EXISTS #whg
	SELECT
		w.client_inn,
		w.client_name,
		w.contract_number,
		w.doc_reg_number,
		CAST(w.MAX_DOC_DATE_MO AS date) AS MAX_DOC_DATE_MO
	INTO #whg
	FROM #wh w
	 GROUP BY 
		w.client_inn, 
		w.client_name, 
		w.contract_number, 
		w.doc_reg_number, 
		w.MAX_DOC_DATE_MO 

--SELECT count(*) FROM #whg --270114
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--SELECT TOP 5 * FROM [DATAMARTS].[ASKU_RP].[vw_counterparty_contract_segment]
--SELECT TOP 5 * FROM [asku_kp_cdd].[cdd].[organization_department]  --Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° управлСния

--SELECT TOP 5 * FROM #whg
--SELECT TOP 5 * FROM [DATAMARTS].[FINAL].[GPN_WHOLESALE_TRANSACTIONS] WHERE GOD = '2024'

--SELECT count(*) AS matching_inn
--FROM [DATAMARTS].[ASKU_RP].[vw_counterparty_contract_segment] AS kpc
--INNER JOIN #whg AS go
--ON kpc.inn = go.client_inn;



	 DROP TABLE IF EXISTS #reg --ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ наши (пропусков Π² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚) ΠΈΠ· МО
	 SELECT 
		s.client_inn, --ΠΈΠ½Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
		LOWER(s.client_name) AS client_name, -- Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
		s.contract_number, -- Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°
		s.doc_reg_number, --Π½ΠΎΠΌΠ΅Ρ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° рСгистрации
		cc.organization_department AS department, -- ΠΎΡ‚Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
		s.MAX_DOC_DATE_MO
	 INTO #reg
	 FROM #whg s
	 LEFT JOIN  [DATAMARTS].[ASKU_RP].[vw_counterparty_contract_segment] cc --ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚
	 ON s.contract_number = cc.contract_number AND s.client_inn = cc.inn 

--SELECT count(*) FROM #reg --270146
--SELECT top 10 * from #reg
--SELECT TOP 10 * FROM [DATAMARTS].[ASKU_RP].[vw_counterparty_contract_segment]

---------- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° NULL----------
--SELECT count(*) 
--FROM #reg
--WHERE client_inn IS NULL
--	OR client_name IS NULL
--	OR contract_number IS NULL --41 NULL
--	OR doc_reg_number IS NULL
--	OR department IS NULL
--	OR MAX_DOC_DATE_MO IS NULL
------------------------------------------------


-- валидация Π½Π° Π»ΠΎΠΆΠ½ΡƒΡŽ подстановку--
--SELECT count(*) AS mismatch_count
--FROM #reg
--WHERE client_inn != client_inn_2 AND client_name != counterparty_name;
--0 нСсовпадСний--
------------------------------------------------------------------------------------------------

---- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· GPN_WHOLESALE_TRANSACTIONS Π·Π° 2023 Π³ΠΎΠ΄
--SELECT TOP 10 * FROM #reg
----Π”ΠΈΠ»Π΅Ρ€Ρ‹ ΠΈ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ находятся ΠΈΠ· dll
--SELECT TOP 10 * FROM #dll

-- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Ρƒ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ², ΠΈ Π² GPN_WHOLESALE_TRANSACTIONS Π·Π° 2023 Π³ΠΎΠ΄
DROP TABLE IF EXISTS #CommonClients;
SELECT 
    dl.agent_inn AS agent_inn_dil,
    dl.client_inn AS client_inn_dil,
	LOWER(dl.client_name) AS client_name_dil,
	r.department AS department,
	r.client_inn AS client_inn_GZPN,
	LOWER(r.client_name) AS client_name_GZPN

INTO #CommonClients
	FROM #dll dl
INNER JOIN #reg r 
	ON dl.client_inn = r.client_inn --61453 или 767 Ссли -> 
	--AND dl.client_name=r.client_name

SELECT count(*) FROM #CommonClients --61453
SELECT count(*) FROM #CommonClients WHERE agent_inn_dil IS NOT null --54102

-- валидация Π½Π° Π»ΠΎΠΆΠ½ΡƒΡŽ подстановку--
--SELECT count(*) AS mismatch_count
--FROM #CommonClients
--WHERE client_inn_dil != client_inn_GZPN AND client_name_dil != client_name_GZPN;
--0 нСсовпадСний--

---------- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° NULL--------------
--SELECT count(*) -- 
--FROM #CommonClients
--WHERE agent_inn_dil IS NULL -- 7351
--	OR client_inn_dil IS NULL
--	OR client_name_dil IS NULL 
--	OR client_inn_GZPN IS NULL
--	OR client_name_GZPN IS NULL
--	OR department IS NULL
	--ΠžΠ±Ρ‰ΠΈΠΉ скрипт 7351 NULL
------------------------------------------------
--Π˜Π’ΠžΠ“Πž--

-- ВсСго ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (61453 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²)
SELECT count(*) FROM #CommonClients
-- ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (116 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²)
SELECT COUNT(DISTINCT client_inn_dil) FROM #CommonClients;

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--ΠžΠšΠ’Π­Π”Π«
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--SELECT TOP 10 * FROM [SANDBOX_DB_TEAM_21].[dbo].[Med_Okved] -- Ρ‚Π°Π±Π»ΠΈΡ†Π° с оквэдами

DROP TABLE IF EXISTS #KP_CommonClientsOkved; -- подтягиваСм оквэды ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Ρƒ нас, ΠΈ Ρƒ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²
SELECT 
	ccl.agent_inn_dil, 
	ccl.client_inn_dil, 
	ccl.client_name_dil, 
	ccl.client_inn_GZPN,
	ccl.client_name_GZPN, 
	ccl.department, 
	okved.[Π˜ΠΠ”Π•ΠšΠ‘] AS okved_client
INTO #KP_CommonClientsOkved
FROM #CommonClients ccl
LEFT JOIN [SANDBOX_DB_TEAM_21].[dbo].[Med_Okved] okved 
	ON ccl.client_inn_GZPN=okved.[ИНН] 
GROUP BY 
	ccl.agent_inn_dil,
	ccl.client_inn_dil, 
	ccl.client_name_dil, 
	ccl.client_inn_GZPN, 
	ccl.client_name_GZPN,
	ccl.department,
	okved.[Π˜ΠΠ”Π•ΠšΠ‘]

SELECT count(*) FROM #KP_CommonClientsOkved

SELECT * FROM #KP_CommonClientsOkved
SELECT count(*) FROM #KP_CommonClientsOkved WHERE agent_inn_dil IS NULL -- 27 пропусков Π² Π΄Π°Π½Π½Ρ‹Ρ…
SELECT count(*) FROM #KP_CommonClientsOkved WHERE client_name_dil IS NULL  -- 27 пропусков Π² Π΄Π°Π½Π½Ρ‹Ρ…

-------------------- ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ---------------------------------------

-- спСрва agent_inn_dil--

-- Π¨Π°Π³ 1: ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€ client_inn ΠΈ agent_inn для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹
WITH UniqueAgentPairs AS (
    SELECT 
        client_inn, 
        agent_inn
    FROM #vttr
    GROUP BY client_inn, agent_inn
),
-- Π¨Π°Π³ 2: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… agent_inn для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ client_inn
UniqueAgentCount AS (
    SELECT 
        client_inn,
        COUNT(agent_inn) AS UniqueAgentCount
    FROM UniqueAgentPairs
    GROUP BY client_inn
    HAVING COUNT(agent_inn) = 1 -- Π’Ρ‹Π±ΠΎΡ€ client_inn с ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ agent_inn - ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ соотвСствиС 
),
-- Π¨Π°Π³ 3: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ обновлСнию, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π½ΡƒΠΆΠ½Ρ‹Ρ… client_inn ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ agent_inn
AgentsToUpdate AS (
    SELECT 
        uac.client_inn,
        uap.agent_inn
    FROM UniqueAgentCount uac
    JOIN UniqueAgentPairs uap ON uac.client_inn = uap.client_inn
)
-- ОбновлСниС #KP_CommonClientsOkved
UPDATE kpc
SET kpc.agent_inn_dil = atu.agent_inn
FROM #KP_CommonClientsOkved kpc
JOIN AgentsToUpdate atu ON kpc.client_inn_dil = atu.client_inn
WHERE kpc.agent_inn_dil IS NULL;


-- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° 
SELECT * FROM #KP_CommonClientsOkved WHERE #KP_CommonClientsOkved.client_inn_dil = '0276906995'
SELECT * FROM #vttr WHERE #vttr.client_inn = '0276906995'
-- Π²Ρ€ΠΎΠ΄Π΅ ΠΎΠΊ

-- Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ client_name_dil--Ρ‚ΡƒΡ‚ Ρ‡ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ связь однозначная

UPDATE kpc
SET kpc.client_name_dil = reg.client_name
FROM #KP_CommonClientsOkved kpc
INNER JOIN #reg reg ON kpc.client_inn_dil = reg.client_inn
WHERE kpc.client_name_dil IS NULL


-- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° 
SELECT * FROM #KP_CommonClientsOkved WHERE #KP_CommonClientsOkved.client_inn_dil = '0276906995'
SELECT * FROM #reg WHERE #reg.client_inn = '0276906995'
-- Π²Ρ€ΠΎΠ΄Π΅ ΠΎΠΊ


SELECT count(*) FROM #KP_CommonClientsOkved WHERE okved_client IS NULL --24 пустых оквэда

-- Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠžΠšΠ’Π­Π”ΠΠœ ΠΈΠ· [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED]
 --Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ пропуски Π² Π˜ΠΠ”Π•ΠšΠ‘ Π½Π° значСния ΠΈΠ· NAIMENOVANIE_OKVED для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ½Π½-----------------------------------------------------
UPDATE kpc
SET kpc.okved_client = go.NAIMENOVANIE_OKVED
FROM #KP_CommonClientsOkved AS kpc
INNER JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] AS go
    ON kpc.client_inn_dil = go.INN
WHERE go.VID_OKVED = 'Основной' 
  AND kpc.okved_client IS NULL;

SELECT * FROM #KP_CommonClientsOkved

--ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сколько ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Π½ Π΅ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ
--SELECT count(*) AS matching_inn
--FROM #KP_CommonClientsOkved AS kpc
--INNER JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] AS go
--ON kpc.client_inn_dil = go.INN;

-- хояу Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π˜ΠΠ”Π•ΠšΠ‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π΅Π½ ΠΈΠ· [Med_Okved] Π½Π° описаниС ΠΈΠ· [GEN_OKVED], Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ каТСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΌ
UPDATE kpc
SET kpc.okved_client = go.NAIMENOVANIE_OKVED
FROM #KP_CommonClientsOkved AS kpc
INNER JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] AS go
    ON kpc.client_inn_dil = go.INN
WHERE kpc.okved_client IS NULL OR kpc.okved_client <> go.NAIMENOVANIE_OKVED; -- обновляСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π˜ΠΠ”Π•ΠšΠ‘ пустой ΠΈΠ»ΠΈ отличаСтся ΠΎΡ‚ NAIMENOVANIE_OKVED
------------------------------------------
SELECT * FROM #KP_CommonClientsOkved

	DROP TABLE IF EXISTS [SANDBOX_DB_TEAM_21].[dbo].[TIT_dealer_MO]
	SELECT * 
	INTO [SANDBOX_DB_TEAM_21].[dbo].[TIT_dealer_MO]
	FROM #KP_CommonClientsOkved



FullKP

----ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--Π Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²
	DROP TABLE IF EXISTS #cll
	SELECT DISTINCT 
		cl.agent_inn, 
		cl.agent_name, 
		cl.client_inn, 
		cl.client_name, 
		contract_date_begin, 
		contract_name
	INTO #cll
	FROM [DATAMARTS].[dpa].[vw_clients] cl -- справочник ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²	(с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ Π½Π° послСднюю ΠΏΡ€ΠΎΠ΄Π°ΠΆΡƒ)  

	DROP TABLE IF EXISTS #vtt
	SELECT 
		vt.client_inn, 
		vt.agent_inn, --UPD Π”ΠΎΠ±Π°Π²ΠΈΠ» Антон
		vt.contract_name, 
		vt.region, 
		CAST(MAX(vt.datetime_trn)OVER(PARTITION BY vt.client_inn,vt.contract_name) AS DATE) AS MAX_DOC_date -- для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ client_inn ΠΈ contract_name Π±Π΅Ρ€Π΅ΠΌ макс Π·Π½Π°Ρ‡ datetime_trn, приводится ΠΊ date ΠΈ назначаСтся MAX_DOC_date
	INTO #vtt
	FROM [DATAMARTS].[dpa].vw_transactions vt -- ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² 
	GROUP BY vt.datetime_trn, vt.client_inn, vt.agent_inn, vt.contract_name, vt.region

	--SELECT TOP 5 * FROM [DATAMARTS].[dpa].vw_transactions
	--SELECT TOP 5 * FROM #vtt


	--SELECT count(*) FROM [DATAMARTS].[dpa].vw_transactions --17139622
	--SELECT count(*) FROM [DATAMARTS].[dpa].vw_transactions WHERE region IS NULL --1069432
	--SELECT count(*) FROM [DATAMARTS].[dpa].vw_transactions WHERE region IS not NULL --16070190
	
	--SELECT count(*) FROM #vtt --17011925
	--SELECT count(*) FROM #vtt WHERE region IS NULL --1034482
	--SELECT count(*) FROM #vtt WHERE region IS not NULL --15977443



-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	DROP TABLE IF EXISTS #vttr
	SELECT 
		t.client_inn, 
		t.agent_inn, --upd: t.agent_inn Π΄ΠΎΠ±Π°Π²ΠΈΠ»
		t.contract_name, 
		t.region, 
		t.MAX_DOC_date
	INTO #vttr
	FROM #vtt t
	GROUP BY  t.client_inn, t.agent_inn, t.contract_name, t.region, t.MAX_DOC_date

	
	---- Π±Π΅Π· t.agent_inn
	--SELECT COUNT(*) FROM #vttr --74678
	--SELECT count(*) FROM #vttr WHERE region IS NULL --4237
	--SELECT count(*) FROM #vttr WHERE region IS not NULL --70441

	---- с t.agent_inn
	--SELECT COUNT(*) FROM #vttr --75251
	--SELECT count(*) FROM #vttr WHERE region IS NULL --4324
	--SELECT count(*) FROM #vttr WHERE region IS not NULL --70927

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--ΠŸΡ€ΠΎΠ΄Π°ΠΆ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ справочника Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²

    DROP TABLE IF EXISTS #dll
	SELECT 
		cll.agent_inn, 
		cll.agent_name, 
		vttr.client_inn, 
		cll.client_name, 
		vttr.region,
		cll.contract_name, 
		CAST(cll.contract_date_begin AS DATE) AS MIN_DOC_date, 
		vttr.MAX_DOC_date
	INTO #dll
	FROM #vttr vttr 
	LEFT JOIN #cll cll
	ON CONCAT(cll.client_inn,cll.contract_name)=CONCAT(vttr.client_inn,vttr.contract_name)
	GROUP BY cll.agent_inn, cll.agent_name, vttr.client_inn, cll.client_name, vttr.region,
	cll.contract_name, cll.contract_date_begin, vttr.MAX_DOC_date

	----SELECT * FROM #dll WHERE #dll.contract_name IS NULL 

	---- #vttr check
	--SELECT TOP 5 * FROM #vttr

	---- #cll check
	--SELECT TOP 5 * FROM #cll

	---- #dll check
	--SELECT * FROM #dll

	--SELECT TOP 10 * FROM #dll --74887
	--SELECT COUNT(*) FROM #dll WHERE agent_inn IS not NULL --58639
	--SELECT COUNT(*) FROM #dll WHERE agent_inn IS NULL -- 16248

	--SELECT * FROM #dll WHERE agent_inn IS NULL AND client_inn='524900669020'
	--SELECT * FROM #vttr WHERE client_inn='524900669020'
	--SELECT * FROM #cll WHERE client_inn='524900669020'
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------	   
----мэппинг АЗБ для КК

--	DROP TABLE IF EXISTS #coord 
--    SELECT o.c_code AS ΠšΠžΠ”_АБКУ, o.c_comment AS ΠšΠžΠœΠœΠ•ΠΠ’ΠΠ Π˜Π™_АБКУ, 
--	o.c_description AS ΠžΠŸΠ˜Π‘ΠΠΠ˜Π•_АБКУ, ou.standart_code ΠšΠžΠ”_БВАНДАРВ, 
--	ou.standart_description AS ΠžΠŸΠ˜Π‘ΠΠΠ˜Π•_БВАНДАРВ, em.COORD_EAST, em.COORD_NORTH
--	INTO #coord
--	FROM [asku_rp_kk_cdd].[cdd].[operating_unit] o
--	LEFT JOIN [DATAMARTS].[DICT].[vw_operation_unit] ou
--	ON o.id_rref=ou.ou_ku_id_asku_rp_kk
--	LEFT JOIN [DATAMARTS].[EMIS].[VW_AZSS_GPN] em
--	ON ou.standart_code_emis=em.GPNAZS_ID
--	GROUP BY o.c_code, o.c_comment, o.c_description, ou.standart_code, 
--	ou.standart_description, em.COORD_EAST, em.COORD_NORTH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 --Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ½Π½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠ°Ρ€Ρ‚Π°ΠΌ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π»ΠΈΡ† Π Π€ Ρƒ Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· [VW_REALIZACIYA_FULL_KP] Π·Π° 2023 Π³ΠΎΠ΄ 
	 DROP TABLE IF EXISTS #wee;
	 SELECT 
		s.KONTRAGENT_INN, 
		s.KONTRAGENT_NAIMENOVANIE, 
		s.DOGOVORKONTRAGENTA_DATA_DOGOVORA, 
		s.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, 
		s.DOGOVORKONTRAGENTA_ID_ASKU, 
		s.DATA_OPERACII,
		MAX(s.DATA_OPERACII)OVER(PARTITION BY KONTRAGENT_INN,DOGOVORKONTRAGENTA_NOMER_DOGOVORA) AS MAX_DOC_DATE_KK
	 INTO #wee
	 FROM [DATAMARTS].[KA].[VW_REALIZACIYA_FULL_KP] s
	 WHERE YEAR(DATA_OPERACII)='2023' -- DATA_OPERACII>='2023-07-01' and DATA_OPERACII<='2023-12-31'
	 AND KOLICHESTVO_L>0
	 --AND NOMENKLATURNAYA_GRUPPA_KRATKO='НСфтСпродукты' 
	 --AND DOGOVORKONTRAGENTA_KLASSIFIKACIYA_KLIENTA='Π”ΠΈΠ»Π΅Ρ€Ρ‹'
	 GROUP BY KONTRAGENT_INN, KONTRAGENT_NAIMENOVANIE, s.DOGOVORKONTRAGENTA_DATA_DOGOVORA, s.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, s.DOGOVORKONTRAGENTA_ID_ASKU, s.DATA_OPERACII

	 --SELECT TOP 10 * FROM [DATAMARTS].[KA].[VW_REALIZACIYA_FULL_KP] WHERE DOGOVORKONTRAGENTA_GOSKONTRAKT!=1
	 --SELECT TOP 10 * FROM #wee

	 --SELECT DISTINCT NOMENKLATURNAYA_GRUPPA_KRATKO FROM [DATAMARTS].[KA].[VW_REALIZACIYA_FULL_KP]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	
	DROP TABLE IF EXISTS #wwe
	 SELECT 
		a.KONTRAGENT_INN, 
		a.KONTRAGENT_NAIMENOVANIE,
		a.DOGOVORKONTRAGENTA_DATA_DOGOVORA, 
		a.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, 
		a.DOGOVORKONTRAGENTA_ID_ASKU, 
		CAST(a.MAX_DOC_DATE_KK AS date) AS MAX_DOC_DATE_KK
	 INTO #wwe
	 FROM #wee a
	 GROUP BY 
		a.KONTRAGENT_INN, 
		a.KONTRAGENT_NAIMENOVANIE, 
		a.DOGOVORKONTRAGENTA_DATA_DOGOVORA, 
		a.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, 
		a.DOGOVORKONTRAGENTA_ID_ASKU, 
		a.MAX_DOC_DATE_KK 

	 --SELECT TOP 10 * FROM [DATAMARTS].[KA].[VW_REALIZACIYA_FULL_KP]
	 --WHERE YEAR(DATA_OPERACII)='2023' AND KONTRAGENT_INN='5506039040'

	 --SELECT TOP 10 * FROM #wwe WHERE #wwe.KONTRAGENT_INN='5506039040'
	 --SELECT TOP 10 * FROM #wee WHERE #wee.KONTRAGENT_INN='5506039040'
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	 DROP TABLE IF EXISTS #reg --ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ наши (пропусков Π² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚)
	 SELECT s.KONTRAGENT_INN, s.KONTRAGENT_NAIMENOVANIE, s.DOGOVORKONTRAGENTA_DATA_DOGOVORA, s.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, r.c_description AS OTDELENIE, MAX_DOC_DATE_KK
	 INTO #reg
	 FROM #wwe s
	 LEFT JOIN  [asku_rp_kk_cdd].[cdd].[counterparty_contract] cc --ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚
	 ON s.DOGOVORKONTRAGENTA_ID_ASKU = cc.id_rref 
	 LEFT JOIN  [asku_kp_cdd].[cdd].[organization_department] r --Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° управлСния
	 ON cc.organization_department_rref=r.id_rref
	
	--SELECT count(*) FROM #reg --74318

--Π˜Π’ΠžΠ“-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    DROP TABLE IF EXISTS #match_date
	SELECT l.agent_inn, l.agent_name, l.client_inn, l.client_name, l.region, l.contract_name, l.MIN_DOC_date, l.MAX_DOC_date, 
	e.OTDELENIE, e.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, e.DOGOVORKONTRAGENTA_DATA_DOGOVORA, MAX_DOC_DATE_KK
	INTO #match_date
	FROM #dll l -- ΠŸΡ€ΠΎΠ΄Π°ΠΆ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ справочника Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ²
	LEFT JOIN #reg e --ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ наши
	ON l.client_inn=e.KONTRAGENT_INN AND l.client_name=e.KONTRAGENT_NAIMENOVANIE --upd: Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½ΠΎΠ²ΠΎΠ΅ соотвСтствиС
	GROUP BY l.agent_inn, l.agent_name, l.client_inn, l.client_name, l.region, l.contract_name, l.MIN_DOC_date, l.MAX_DOC_date, 
	e.OTDELENIE, e.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, e.DOGOVORKONTRAGENTA_DATA_DOGOVORA, MAX_DOC_DATE_KK

	--SELECT TOP 5 * FROM #match_date WHERE agent_inn IS NOT NULL 
	--SELECT TOP 5 * FROM #dll WHERE agent_inn IS NOT NULL 
	--SELECT TOP 5 * FROM #reg 

	--SELECT COUNT(DISTINCT agent_inn) FROM #match_date --75047
	--SELECT COUNT(*) FROM #match_date WHERE agent_inn IS not NULL --58799
	--SELECT COUNT(*) FROM #match_date WHERE agent_inn IS NULL -- 16248
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	DROP TABLE IF EXISTS [SANDBOX_DB_TEAM_21].[dbo].[GEN_dealer]
	SELECT * 
	INTO [SANDBOX_DB_TEAM_21].[dbo].[GEN_dealer]
	FROM #match_date
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

		SELECT distinct d.agent_inn, 
		--d.agent_name, ag.NAIMENOVANIE_OKVED AS agent_okved,
		d.client_inn
		--, 
		--d.client_name, cl.NAIMENOVANIE_OKVED AS client_okved, 
		--d.region, d.contract_name, d.MIN_DOC_date, d.MAX_DOC_date, d.OTDELENIE, 
		--d.DOGOVORKONTRAGENTA_NOMER_DOGOVORA, d.DOGOVORKONTRAGENTA_DATA_DOGOVORA,
		--d.MAX_DOC_DATE_KK 
		FROM [SANDBOX_DB_TEAM_21].[dbo].[GEN_dealer] d
		LEFT JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] ag
		ON d.agent_inn=ag.INN
		LEFT JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] cl
		ON d.client_inn=cl.INN
		WHERE ag.NAIMENOVANIE_OKVED IS NULL 
		OR cl.NAIMENOVANIE_OKVED IS NULL 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· VW_REALIZACIYA_FULL_KP Π·Π° 2023 Π³ΠΎΠ΄
--SELECT TOP 10 * FROM #reg
----Π”ΠΈΠ»Π΅Ρ€Ρ‹ ΠΈ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ находятся ΠΈΠ· dll
--SELECT TOP 10 * FROM #dll

-- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Ρƒ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ², ΠΈ Π² VW_REALIZACIYA_FULL_KP Π·Π° 2023 Π³ΠΎΠ΄
DROP TABLE IF EXISTS #CommonClients;
SELECT 
    dl.agent_inn AS agent_inn_dil,
    dl.client_inn AS client_inn_dil,
	dl.client_name AS client_name_dil,
	r.KONTRAGENT_NAIMENOVANIE AS client_name_GZPN
INTO #CommonClients
	FROM #dll dl
INNER JOIN #reg r 
	ON dl.client_inn = r.KONTRAGENT_INN --8455 или 417 Ссли -> AND dl.client_name=r.KONTRAGENT_NAIMENOVANIE


--SELECT TOP 5 * FROM #reg
--SELECT TOP 5 * FROM #dll WHERE client_inn is not NULL AND agent_inn is not NULL 

--SELECT * FROM #CommonClients
---- ВсСго ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (8455 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²)
--SELECT count(*) FROM #CommonClients
---- ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (906 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²)
--SELECT COUNT(DISTINCT client_inn_dil) FROM #CommonClients;

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--ΠžΠšΠ’Π­Π”Π«
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--SELECT TOP 10 * FROM [SANDBOX_DB_TEAM_21].[dbo].[Med_Okved] -- Ρ‚Π°Π±Π»ΠΈΡ†Π° с оквэдами

DROP TABLE IF EXISTS #KP_CommonClientsOkved; -- подтягиваСм оквэды ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ ΠΈ Ρƒ нас, ΠΈ Ρƒ Π΄ΠΈΠ»Π΅Ρ€ΠΎΠ²
SELECT ccl.agent_inn_dil, ccl.client_inn_dil, ccl.client_name_dil, ccl.client_name_GZPN, okved.[Π˜ΠΠ”Π•ΠšΠ‘]
INTO #KP_CommonClientsOkved
FROM #CommonClients ccl
LEFT JOIN [SANDBOX_DB_TEAM_21].[dbo].[Med_Okved] okved 
	ON ccl.client_inn_dil=okved.[ИНН]
GROUP BY 
	ccl.agent_inn_dil,
	ccl.client_inn_dil, 
	ccl.client_name_dil, 
	ccl.client_name_GZPN, 
	okved.[Π˜ΠΠ”Π•ΠšΠ‘]

-- посмотрим Π½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π²ΠΈΠ΄ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ пропусков
--SELECT * FROM #CommonClients
--GROUP BY agent_inn_dil, client_inn_dil, client_name_dil, client_name_GZPN

--SELECT count(client_inn_dil) FROM #KP_CommonClientsOkved --1083 строк

--SELECT count(DISTINCT client_inn_dil) FROM #KP_CommonClientsOkved -- 906 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Π½

--SELECT count(*) FROM #KP_CommonClientsOkved WHERE agent_inn_dil IS NULL OR client_name_dil IS NULL -- 297 пропусков Π² Π΄Π°Π½Π½Ρ‹Ρ…

-------------------- ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ--------------------

-- спСрва agent_inn--

-- Π¨Π°Π³ 1: ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€ client_inn ΠΈ agent_inn для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹
WITH UniqueAgentPairs AS (
    SELECT 
        client_inn, 
        agent_inn
    FROM #vttr
    GROUP BY client_inn, agent_inn
),
-- Π¨Π°Π³ 2: ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… agent_inn для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ client_inn
UniqueAgentCount AS (
    SELECT 
        client_inn,
        COUNT(agent_inn) AS UniqueAgentCount
    FROM UniqueAgentPairs
    GROUP BY client_inn
    HAVING COUNT(agent_inn) = 1 -- Π’Ρ‹Π±ΠΎΡ€ client_inn с ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ agent_inn - ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ соотвСствиС 
),
-- Π¨Π°Π³ 3: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ обновлСнию, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π½ΡƒΠΆΠ½Ρ‹Ρ… client_inn ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ agent_inn
AgentsToUpdate AS (
    SELECT 
        uac.client_inn,
        uap.agent_inn
    FROM UniqueAgentCount uac
    JOIN UniqueAgentPairs uap ON uac.client_inn = uap.client_inn
)
-- ОбновлСниС #KP_CommonClientsOkved
UPDATE kpc
SET kpc.agent_inn_dil = atu.agent_inn
FROM #KP_CommonClientsOkved kpc
JOIN AgentsToUpdate atu ON kpc.client_inn_dil = atu.client_inn
WHERE kpc.agent_inn_dil IS NULL;


-- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° 
--SELECT * FROM #KP_CommonClientsOkved WHERE #KP_CommonClientsOkved.client_inn_dil = '0275918765'
--SELECT * FROM #vttr WHERE #vttr.client_inn = '0275918765'
-- Π²Ρ€ΠΎΠ΄Π΅ ΠΎΠΊ

-- Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ client_name_dil--Ρ‚ΡƒΡ‚ Ρ‡ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ связь однозначная

UPDATE kpc
SET kpc.client_name_dil = reg.KONTRAGENT_NAIMENOVANIE
FROM #KP_CommonClientsOkved kpc
INNER JOIN #reg reg ON kpc.client_inn_dil = reg.KONTRAGENT_INN
WHERE kpc.client_name_dil IS NULL

-- ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° 
--SELECT * FROM #KP_CommonClientsOkved WHERE #KP_CommonClientsOkved.client_inn_dil = '0275918765'
--SELECT * FROM #reg WHERE #reg.KONTRAGENT_INN = '0275918765'
-- Π²Ρ€ΠΎΠ΄Π΅ ΠΎΠΊ

-- Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠžΠšΠ’Π­Π”ΠΠœ ΠΈΠ· [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED]
 --Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ пропуски Π² Π˜ΠΠ”Π•ΠšΠ‘ Π½Π° значСния ΠΈΠ· NAIMENOVANIE_OKVED для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ½Π½-----------------------------------------------------
UPDATE kpc
SET kpc.Π˜ΠΠ”Π•ΠšΠ‘ = LEFT(go.NAIMENOVANIE_OKVED, 255)
FROM #KP_CommonClientsOkved AS kpc
INNER JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] AS go
ON kpc.client_inn_dil = go.INN
WHERE go.VID_OKVED = 'Основной' and kpc.Π˜ΠΠ”Π•ΠšΠ‘ IS NULL;



--ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сколько ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Π½ Π΅ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ
SELECT count(*) AS matching_inn
FROM #KP_CommonClientsOkved AS kpc
INNER JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] AS go
ON kpc.client_inn_dil = go.INN;

-- Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π˜ΠΠ”Π•ΠšΠ‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π΅Π½ ΠΈΠ· [Med_Okved] Π½Π° описаниС ΠΈΠ· [GEN_OKVED], Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ каТСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΌ
UPDATE kpc
SET kpc.Π˜ΠΠ”Π•ΠšΠ‘ = go.NAIMENOVANIE_OKVED
FROM #KP_CommonClientsOkved AS kpc
INNER JOIN [SANDBOX_DB_TEAM_21].[dbo].[GEN_OKVED] AS go
    ON kpc.client_inn_dil = go.INN
WHERE kpc.Π˜ΠΠ”Π•ΠšΠ‘ IS NULL OR kpc.Π˜ΠΠ”Π•ΠšΠ‘ <> go.NAIMENOVANIE_OKVED; -- обновляСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π˜ΠΠ”Π•ΠšΠ‘ пустой ΠΈΠ»ΠΈ отличаСтся ΠΎΡ‚ NAIMENOVANIE_OKVED
------------------------------------------
SELECT * FROM #KP_CommonClientsOkved

	DROP TABLE IF EXISTS [SANDBOX_DB_TEAM_21].[dbo].[TIT_dealer_FULLKP]
	SELECT * 
	INTO [SANDBOX_DB_TEAM_21].[dbo].[TIT_dealer_FULLKP]
	FROM #KP_CommonClientsOkved


	SELECT TOP 10 * FROM #reg
Editor is loading...
Leave a Comment