4,707 questions
One way is to define the source query as a derived table (wrapped in parenthesis with an alias). Below is an example:
select * into #join
from (
SELECT
0 as 'OrgSalesOrder',
p.OrderNumber 'SalesOrder',
p.InvoiceNumber,
p.CreditNumber,
p.PaymentID as 'PaymentID',
p.Currency as 'Currency',
--c.CustomerID,
--concat(c.FirstName + ' ', c.LastName) as CustomerName,
d.FullDate,
pc.PaymentName as PaymentMethod,
ps.[Description] as PaymentStatus,
p.PaymentValue,
cn.Authorisation as ChequeNum,
tt.TransactionType,
p.ManualRefund,
case when
p.PaymentID like 'D%' then so.SalesOfficeKey
else
p.SalesOfficeKey
end as SalesOffice
FROM
#testPayments p
left join #DreamPayments DP on p.PaymentID = 'D' + cast(dp.PaymentNumber as varchar)
left join test.DimSalesOffice so on DP.SalesOffice = so.SalesOfficeCode
INNER JOIN dbo.DimDate d on p.PaymentDateKey = d.DateKey
INNER JOIN [dbo].[DimPaymentStatus] ps on p.PaymentStatusKey = ps.PaymentStatusKey
INNER JOIN [dbo].[DimTransactionType] tt on p.TransactionTypeKey = tt.TransactionTypeKey
Left outer join [dbo].[DimPaymentCode] pc on p.PaymentCodeKey = pc.PaymentCodeKey
LEFT OUTER JOIN #ChequeNum cn ON p.PaymentID = Cast(cn.Payment_Num as Nvarchar)
) AS derived_table