как суммировать итоги, но сохранить только одно имя из нескольких
У меня два CTE
с ProducerCode
, ProducerLocationID
и ProducerName
. Но из-за ошибки конечного пользователя имя ProducerName
может немного отличаться от этих двух CTE
. Как я могу сгруппировать SUM
помощью ProducerCode
и ProducerLocationID
но сохранить только одно имя ProducerName
(скажем, от первого CTE
)?
Это то, что я получил сейчас:
Два ряда с
ProducerCode
1321 и ProducerLocationID
1587 должны иметь NetWrittenPremium
как 767,109, который равен (469956.00 + 297153.00). То же самое с WPNewBusiness
но только у одного ProducerName
как «The Harry W Gorst Co Inc»
- Группа sql sum
- Группировать по количеству в неделю и показывать только запись с максимальной суммой (доступ)
- T-SQL, нулевая сумма для отсутствия соответствия для соединения
- SQL Server Суммирует определенное количество строк на основе другого столбца
- SQL Query - GROUP BY SUM зависает, когда нет элементов
Мне нужно это так:
Вот мой полный запрос:
;WITH cte_TopWP --T AS ( SELECT ProducerCode,[Producer Location ID], Producer, SUM(premium) as NetWrittenPremium, SUM(CASE WHEN PolicyType = 'New Business' THEN Premium ELSE 0 END) as WPNewBusiness, SUM(CASE WHEN PolicyType = 'Renewal' THEN Premium ELSE 0 END) as WPRenewal, SUM(CASE WHEN PolicyType = 'Rewrite' THEN Premium ELSE 0 END) as WPRewrite, SUM(CASE WHEN PolicyType = 'New Business' AND TransactionType = 'Policy' THEN 1 ELSE 0 END) as BindsNewBusiness, SUM(CASE WHEN PolicyType = 'Renewal' AND TransactionType = 'Policy' THEN 1 ELSE 0 END) as BindsRenewals, SUM(CASE WHEN PolicyType = 'Rewrite' AND TransactionType = 'Policy' THEN 1 ELSE 0 END) as BindsRewrite, SUM(CASE WHEN PolicyType = 'New Business' AND TransactionType = 'Policy' THEN 1 ELSE 0 END) + SUM(CASE WHEN PolicyType = 'Renewal' AND TransactionType = 'Policy' THEN 1 ELSE 0 END) + SUM(CASE WHEN PolicyType = 'Rewrite' AND TransactionType = 'Policy' THEN 1 ELSE 0 END) as PolicyCount FROM ProductionReportMetrics WHERE EffectiveDate >=DateAdd(yy, -1, DATEADD(d, 1, EOMONTH(GETDATE()))) AND EffectiveDate <= EOMONTH(GETDATE()) AND TransactionType = 'Policy' AND CompanyLine = 'Plaza Insurance Company' AND ProducerType = 'Wholesaler' GROUP BY ProducerCode, [Producer Location ID],Producer ) , cte_Counts --C AS ( SELECT ProducerCode,ProducerLocationID, COUNT (distinct ControlNo) as Submissions, SUM(CASE WHEN QuotedPremium IS NOT NULL THEN 1 ELSE 0 END) as Quoted, SUM(CASE WHEN Status = 'Declined' THEN 1 ELSE 0 END ) as Declined FROM ClearanceReportMetrics WHERE EffectiveDate >=DateAdd(yy, -1, DATEADD(d, 1, EOMONTH(GETDATE()))) AND EffectiveDate <= EOMONTH(GETDATE()) AND CompanyLine = 'Plaza Insurance Company' GROUP BY ProducerCode, ProducerLocationID ) SELECT TOP 10 RANK() OVER (ORDER BY NetWrittenPremium desc) as Rank, ROW_NUMBER() OVER (PARTITION BY t.ProducerCode, t.[Producer Location ID] ORDER BY NetWrittenPremium DESC) as num, t.ProducerCode, t.[Producer Location ID], t.Producer as ProducerName , NetWrittenPremium, WPNewBusiness, WPRenewal, WPRewrite, PolicyCount, Submissions, Quoted, BindsNewBusiness, BindsRenewals, BindsRewrite, Declined FROM cte_TopWP t INNER JOIN cte_Counts c ON t.ProducerCode=c.ProducerCode and c.ProducerLocationID=t.[Producer Location ID] ORDER BY NetWrittenPremium DESC
- Основной пользователь SQL, пытающийся понять расширенные функциональные возможности СУММ
- Как я могу добавить в подзаголовок COUNT (*), чтобы найти два строковых значения на один идентификатор?
- SQL-запрос Синтаксис SUM (классический ASP-проект)
- Группировать по двум столбцам и отображать общее количество в каждой строке
вы можете использовать max(Producer)
в cte_TopWP
cte и Drop Producer
из своего оператора Group by
.