У меня есть скрипт красного смещения, в котором я продублировал код
Вот скрипт
SELECT
CASE
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >120 THEN '120 + Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >90 THEN '90 - 120 Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >60 THEN '60 - 90 Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >30 THEN '30 - 60 Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) IS NULL THEN '90 + Days'
ELSE '0 - 30 Days'
END AS OpenedAging,
be.ClientId,
cc.FullName AS ClientName,
SUM(CASE
WHEN (bes.UseAgreedView) = 1 THEN a.ChargeTotalAgreed
ELSE a.ChargeTotal
END - a.PaymentAdjustment - a.PaymentAmount) AS Owed
FROM public.billing_entries be
LEFT JOIN
(
SELECT bed.BillingEntryId,
bed.PaymentCount,
bed.PaymentRegular,
bed.Copay,
bed.ChargeTotal,
bed.ChargeTotalAgreed,
bed.PaymentAdjustment,
bed.PaymentRegular + bed.PaymentCopay - bed.PaymentAdjustment AS PaymentAmount
FROM public.billing_entry_dimensions bed
) a
ON a.BillingEntryId = be.Id
LEFT JOIN
public.billing_settings bes
ON bes.OrganizationId = be.OrganizationId
LEFT JOIN
public.contact_insurances cic
ON cic.Id = be.insuranceId
LEFT JOIN
public.insurance ic
ON ic.Id = cic.InsuranceCompanyId
LEFT JOIN
public.contact_addresses ca
ON ca.Id = be.ClientLocationId
LEFT JOIN
public.contacts cc
ON cc.Id = be.ClientId
WHERE be.OrganizationId = 65277
AND be.IsVoid IS NULL
AND be.IsDeleted IS NULL
GROUP BY
CASE
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >120 THEN '120 + Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >90 THEN '90 - 120 Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >60 THEN '60 - 90 Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) >30 THEN '30 - 60 Days'
WHEN DATEDIFF(Day,CONVERT(DATE,be.timeWorkedFrom),GETDATE()) IS NULL THEN '90 + Days'
ELSE '0 - 30 Days'
END,
be.ClientId,
cc.FullName
Как видите, этот код продублирован в SELECT и в GROUP BY
СЛУЧАЙ, КОГДА DATEDIFF (День, КОНВЕРТ (DATE, be.timeWorkedFrom), GETDATE ())> 120 ТОГДА '120 + Дней', КОГДА DATEDIFF (День, КОНВЕРТ (DATE, be.timeWorkedFrom), GETDATE ())> 90 THEN '90 - 120 дней 'WHEN DATEDIFF (Day, CONVERT (DATE, be.timeWorkedFrom), GETDATE ())> 60 THEN '60 - 90 Days' WHEN DATEDIFF (Day, CONVERT (DATE,be.timeWorkedFrom), GETDATE ())> 30, ТО «30–60 дней» КОГДА DATEDIFF (Day, CONVERT (DATE, be.timeWorkedFrom), GETDATE ()) равен нулю «90 + Days« ELSE »0 - 30 дней'END
Как сделать внутренний запрос и правильно присвоить ему псевдоним SELECT и GROUP BY?