--Trying to see if there is a better way of handling this SQL code. This view will be leveraged in a Power BI report but we are trying to query over 8 million rows and never returns. We have added indexes but still no luck. How can this view
be optimized or rewritten?
ALTER VIEW [dbo].[vw_RawDataEntityReport]
AS
WITH CTE_Rawdata
AS (SELECT AG.[Name] AS [Account Group],
ACC.Id AS [Account ID],
ACC.[Name] AS [Account Description],
CASE
WHEN ACD.IsForBeginningOfYearForTaxCalculation = 1 THEN
'B'
ELSE
'E'
END AS [Beginning/Ending],
ACD.Amount,
CASE
WHEN J.IsIncludedInEverywhereTotal = 1 THEN
ACD.Amount
ELSE
0
END AS Amount2,
J.StateId AS JurisdictionName,
FP.TaxYearId AS [Tax Year],
FP.[Name] AS [Short Year],
LE.SourceEntityId AS [Display Entity ID],
LE.[Name] AS [Entity Name],
CAST(LE.SourceEntityId AS VARCHAR(20)) + '-' + LE.[Name] AS [Entity]
FROM SWP.AccountData ACD
LEFT JOIN SWP.Account ACC
ON ACC.Id = ACD.AccountId
LEFT JOIN SWP.AccountGroup AG
ON AG.Id = ACC.AccountGroupId
LEFT JOIN SWP.FilingDecision FD
ON FD.Id = ACD.FilingDecisionId
LEFT JOIN SWP.Jurisdiction J
ON J.Id = FD.JurisdictionId
LEFT JOIN SWP.FilingPeriod FP
ON FP.Id = FD.FilingPeriodId
LEFT JOIN SWP.LegalEntity LE
ON LE.Id = FD.LegalEntityId)
SELECT [Account Group],
[Account ID],
[Account Description],
[Tax Year],
[Short Year] AS [Filing Period],
[Display Entity ID],
[Entity Name],
[Entity],
[Beginning/Ending],
[EV],
[AL],
[AK],
[AZ],
[AR],
[CA],
[CO],
[CT],
[DE],
[DC],
[FL],
[GA],
[HI],
[ID],
[IL],
[IN],
[IA],
[KS],
[KY],
[LA],
[ME],
[MD],
[MA],
[MI],
[MN],
[MS],
[MO],
[MT],
[NE],
[NV],
[NH],
[NJ],
[NM],
[NY],
[NYC],
[NC],
[ND],
[OH],
[OK],
[OR],
[PA],
[RI],
[SC],
[SD],
[TN],
[TX],
[UT],
[VT],
[VA],
[WA],
[WV],
[WI],
[WY],
[RQ],
[OT],
[O1],
[O2],
[O3],
[O4]
FROM
(
SELECT CTRD.[Account Group],
CTRD.[Account ID],
CTRD.[Account Description],
CTRD.[Tax Year],
CTRD.[Short Year],
CTRD.[Display Entity ID],
CTRD.[Entity Name],
CTRD.[Entity],
CTRD.[Beginning/Ending],
CTRD.JurisdictionName,
SUM(Amount) AS Amount
FROM CTE_Rawdata CTRD
GROUP BY CTRD.[Account Group],
CTRD.[Account ID],
CTRD.[Account Description],
CTRD.[Tax Year],
CTRD.[Short Year],
CTRD.[Display Entity ID],
CTRD.[Entity Name],
CTRD.[Entity],
CTRD.[Beginning/Ending],
CTRD.JurisdictionName
UNION ALL
SELECT CTRD.[Account Group],
CTRD.[Account ID],
CTRD.[Account Description],
CTRD.[Tax Year],
CTRD.[Short Year],
CTRD.[Display Entity ID],
CTRD.[Entity Name],
CTRD.[Entity],
CTRD.[Beginning/Ending],
'EV' AS JurisdictionName,
SUM(Amount2) AS Amount
FROM CTE_Rawdata CTRD
GROUP BY CTRD.[Account Group],
CTRD.[Account ID],
CTRD.[Account Description],
CTRD.[Tax Year],
CTRD.[Short Year],
CTRD.[Display Entity ID],
CTRD.[Entity Name],
CTRD.[Entity],
CTRD.[Beginning/Ending]
) A
PIVOT
(
SUM(A.Amount)
FOR JurisdictionName IN ([EV], [AL], [AK], [AZ], [AR], [CA], [CO], [CT], [DE], [DC], [FL], [GA], [HI], [ID], [IL],
[IN], [IA], [KS], [KY], [LA], [ME], [MD], [MA], [MI], [MN], [MS], [MO], [MT], [NE], [NV],
[NH], [NJ], [NM], [NY], [NYC], [NC], [ND], [OH], [OK], [OR], [PA], [RI], [SC], [SD], [TN],
[TX], [UT], [VT], [VA], [WA], [WV], [WI], [WY], [RQ], [OT], [O1], [O2], [O3], [O4]
)
) AS pivotted