SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Помогите с запросом в MS SQL (Сделать из выборки отчет)
Помогите с запросом в MS SQL [сообщение #2612] Wed, 21 June 2023 09:12 Переход к предыдущему сообщению
Андрей в настоящее время не в онлайне  Андрей
Сообщений: 1
Зарегистрирован: June 2023
Junior Member
Добрый день, меня зовут Андрей. Помогите пожалуйста доработать запрос.
Запрос делает выборку которая показывает строчную выборку с I’d и кол-вот email. Нужно из него сформировать отчет, не могу разобраться.
Должна быть одна строка, первая показывает кол-во всех строк, вторая кол-во ошибок, 3 долю ошибок от всего кол-ва, почему то через with выборка точная не происходит.
Запрос ниже:
USE SBL_DM_Main

GO





WITH CTE_E AS

(

SELECT bk_Contragent_IID, COUNT (*) AS ERRORS_CONTR

FROM (

SELECT

C.bk_Contragent_IID

FROM [dm_exch_csh].[v_Project_Info] AS PRO

LEFT JOIN [dm_exch_csh].[v_Leasing_Agreement_Info] AS LA ON PRO.Project_Code = LA.Project_Code

LEFT JOIN [dm_exch_csh].[v_MD_Contragent] AS C ON PRO.Contragent_IID = C.bk_Contragent_IID

LEFT JOIN [CSH].[stg_mds].[MD_Communication_Contragent] AS CC ON C.bk_Contragent_IID = CC.MD_Contragent_IID

LEFT JOIN (

SELECT MD_Contragent_IID, COUNT (DR_CommunicationType_IID) AS CNT

FROM [CSH].[stg_mds].[MD_Communication_Contragent]

WHERE DR_CommunicationType_IID = 3

GROUP BY MD_Contragent_IID

) TAB ON C.bk_Contragent_IID = TAB.MD_Contragent_IID

WHERE CC.MD_Contragent_IID IS NULL

OR (

LA.Leasing_Agreement_Code IS NULL

AND PRO.Project_Demand_Date > '2022.03.31'

AND CC.DR_CommunicationType_IID = 3

AND TAB.CNT = 0

)

UNION

SELECT

C.bk_Contragent_IID

FROM [dm_exch_csh].[v_Leasing_Agreement_Info] AS LA

LEFT JOIN [dm_exch_csh].[v_MD_Contragent] AS C ON LA.Contragent_IID = C.bk_Contragent_IID

LEFT JOIN [CSH].[stg_mds].[MD_Communication_Contragent] AS CC ON C.bk_Contragent_IID = CC.MD_Contragent_IID

LEFT JOIN (

SELECT MD_Contragent_IID, COUNT (DR_CommunicationType_IID) AS CNT

FROM [CSH].[stg_mds].[MD_Communication_Contragent]

WHERE DR_CommunicationType_IID = 3

GROUP BY MD_Contragent_IID

) TAB ON C.bk_Contragent_IID = TAB.MD_Contragent_IID

WHERE CC.MD_Contragent_IID IS NULL

OR (

LA.Delivery_Date <> ''

AND (

la.Archive_Transfer_Date > '2022-03-31'

OR la.Archive_Transfer_Date = ''

)

AND TAB.CNT = 0

)

) AS T

GROUP BY bk_Contragent_IID

), -- таблицы внутри конструкции WITH перечесляются через запятую и оборачиваются в скобки

CTE_C AS -- таблица записей всего

(

SELECT bk_Contragent_IID, COUNT (*) AS ALL_CONTR

FROM (

SELECT C.bk_Contragent_IID

FROM [dm_exch_csh].[v_Project_Info] AS PRO

LEFT JOIN [dm_exch_csh].[v_Leasing_Agreement_Info] AS LA ON PRO.Project_Code = LA.Project_Code

LEFT JOIN [dm_exch_csh].[v_MD_Contragent] AS C ON PRO.Contragent_IID = C.bk_Contragent_IID

WHERE LA.Leasing_Agreement_Code IS NULL

AND PRO.Project_Demand_Date > '2022.03.31'

UNION

SELECT C.bk_Contragent_IID

FROM [dm_exch_csh].[v_Leasing_Agreement_Info] AS LA

LEFT JOIN [dm_exch_csh].[v_MD_Contragent] AS C ON LA.Contragent_IID = C.bk_Contragent_IID

WHERE la.Archive_Transfer_Date > '2022-03-31'

OR la.Archive_Transfer_Date = ''

) AS T

GROUP BY bk_Contragent_IID

).

—- пример доработки запроса

SELECT COUNT (CTE_E.bk_Contragent_IID ) AS [Ошибки], COUNT (CTE_C.bk_Contragent_IID ) AS [Все строки]

FROM CTE_E,CTE_C

 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Как "зацепить" базу?
Следующая тема: SQL Server Diagnostic Information
Переход к форуму:
  


Текущее время: Sun Dec 22 14:02:28 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00712 секунд