Untitled
unknown
plain_text
8 months ago
2.2 kB
1
Indexable
Never
-- Определение плотности для разных типов топлива WITH Density AS ( SELECT 'АИ-92' AS fuel, 760 AS density UNION ALL SELECT 'АИ-95', 750 UNION ALL SELECT 'АИ-98', 780 UNION ALL SELECT 'ДТ', 840 UNION ALL SELECT 'АИ-100', 750 UNION ALL SELECT 'G-Drive', 750 -- Предполагаемая плотность для всех G-Drive как для АИ ) -- Отфильтрованные транзакции с расчетом тонн , FilteredTransactions AS ( SELECT vt.client_inn, vt.agent_inn, vt.contract_name, vt.region, DATEFROMPARTS(YEAR(vt.datetime_trn), MONTH(vt.datetime_trn), 1) AS transaction_date, vt.nomenclature, SUM(cast(vt.litres AS decimal(10,2))) AS monthly_litres, MAX(vt.datetime_trn) AS MAX_DOC_date FROM [DATAMARTS].[dpa].vw_transactions vt WHERE vt.nomenclature IN ( 'АИ-100 Плюс', 'Аи-98', 'Автомобильный бензин экологического класса К5 марки АИ-92-К5', 'Топливо дизельное межсезонное', -- Продолжение списка номенклатур ... 'ДТ', 'G-95', 'АИ-92 ОПТИ' -- Убедитесь, что весь список номенклатур включен здесь ) GROUP BY vt.client_inn, vt.agent_inn, vt.contract_name, vt.region, vt.nomenclature, YEAR(vt.datetime_trn), MONTH(vt.datetime_trn) ) -- Присоединяем плотности и пересчитываем литры в тонны , TransactionsWithTons AS ( SELECT ft.*, d.density, (ft.monthly_litres * d.density) / 1000 AS monthly_tons -- Расчет тонн FROM FilteredTransactions ft LEFT JOIN Density d ON ft.nomenclature LIKE '%' + d.fuel + '%' ) -- Далее ваш код для создания #vttr, #dll и т.д., используя TransactionsWithTons вместо #vtt -- Замените #vtt на TransactionsWithTons в последующих запросах
Leave a Comment