У меня есть запрос, который возвращает результаты в сводном формате. Я хочу вставить его в таблицу SQL. В конечном итоге я создам задание агента, которое запускается в 10 вечера каждую ночь и вставляет записи в таблицу. Я могу найти примеры, когда люди использовали CTE, а затем результаты CTE в таблице, но мы стали более сложными, так как я изменил результаты.
Может кто-нибудь помочь мне?
ниже приведен скрипт
WITH CTE as
(SELECT
org.StudioMain,
BUD.ForecastProbability as 'Prob%',
(BUD.ForecastProbability*BUD.AmountOrgCurrency) as ForecastAmountOrg,
(BUD.ForecastProbability*CASE
WHEN org.EntityCode = 'WAU' AND org.Studio = 'Sydney' THEN
BUD.AmountOrgCurrency/NULLIF(bud.ForecastCurrencyToNZDfx,0)
WHEN org.EntityCode = 'WAU' AND org.Studio = 'Melbourne' THEN
BUD.AmountOrgCurrency/NULLIF(bud.ForecastCurrencyToNZDfx,0)
else BUD.AmountOrgCurrency
end) as ForecastAmountNZD
FROM EDWH.dbo.FactBudgets AS BUD
INNER JOIN [ODS].[dbo].[PeriodTriggerMain] as T ON BUD.BudgetName = T.BudgetName
LEFT JOIN EDWH.dbo.DimOrg as Org on BUD.DimOrgKey = org.DimOrgKey
LEFT JOIN ODS.dbo.DimFinPeriodDate as Period on BUD.DimFinPeriodDateKey = Period.DimFinPeriodDateKey
LEFT JOIN (SELECT DISTINCT WBS1, ProjectName, Principal, Sector FROM EDWH.dbo.DimProject where WBS2 =
'') as PRN ON BUD.WBS1 = PRN.WBS1
WHERE
CONVERT(varchar(10),dateadd(day,0,dateadd(month,datediff(month,0,dateadd(month, 3,
datefromparts(left(BUD.FinPeriod, 4)-1, right(BUD.FinPeriod, 2), 1))),0)),120) BETWEEN
CONVERT(varchar(10),dateadd(day,0,dateadd(month,datediff(month,0,dateadd(month, 3,
datefromparts(left(T.ForecastPeriod, 4)-1, right(T.ForecastPeriod, 2), 1))),0)),120) AND
CONVERT(varchar(10),dateadd(day,0,dateadd(month,datediff(month,0,dateadd(month, 14,
datefromparts(left(T.ForecastPeriod, 4)-1, right(T.ForecastPeriod, 2), 1))),0)),120)
)
SELECT * FROM (
SELECT
StudioMain,
Currency = 'NZD',
SUM(ForecastAmountNZD) as AmountNZD,
getdate() as Timestamp
FROM CTE as f
GROUP BY
StudioMain
) as NZD
PIVOT(
SUM(AmountNZD)
FOR [StudioMain] IN
([AKL], [CHC], [MEL], [QNT], [SYD], [WEL], [WMT])
)
AS Pivot_Table
UNION ALL
SELECT * FROM (
SELECT
StudioMain,
Currency = 'ORG',
SUM(ForecastAmountOrg) as AmountOrg,
getdate() as Timestamp
FROM CTE as f
GROUP BY
StudioMain
) as Org
PIVOT(
SUM(AmountOrg)
FOR [StudioMain] IN
([AKL], [CHC], [MEL], [QNT], [SYD], [WEL], [WMT])
)
AS Pivot_Table
Я хочу вставить результаты в таблицу;