here you go; fairly anonymised
INSERT INTO dbo.tblSales2
(
duedate
,gldate
,invoicedate
,PaidStatus
,OverdueStatus
,Days
,OverdueAmount
,InvoiceDate
,DueDate
,PaiementDate
,GLDate
,PayStatus
,DocCompany
,OrgID
,OrganisationDesc1
,HyperionCode
,AddressNum
,AddressBookSearchType
,CustomerID
,JDECustDesc
,EDBCustDesc
,DocNumber
,Doctype
,PayItem
,PayItemNumber
,PayItemDocType
,GrossAmount
,openamount
,TaxableAmount
,NonTaxableAmount
,Tax
,RPCRCDCurrencyCode
,CurrencyID
,MonthXRate
,ConstantXrate
,OpenAmountUSDMonthRateValue
,OpenAmountUSDConstantRateValue
,BankAccount
,ObjectAccount
,Subsidiary
,DateOfLastSentReminder
,InvoiceNumber
,remark
,NoOfPayments
,AlphaName
,ItemNumberShort
,LastUpdatedBy
,DateTimeLastUpdated
,Deleted
)
SELECT
F.duedate
,F.gldate
,F.invoicedate
,CASE
WHEN F.openamount <> 0 THEN 'Not yet Paid'
ELSE 'Paid'
END AS PaidStatus
,CASE
WHEN openamount <> 0 AND duedate < @TodayinJulian THEN 'Overdue'
ELSE (
CASE
WHEN openamount = 0 AND duedate < gldate THEN 'Paid but late'
ELSE
CASE
WHEN openamount = 0 AND duedate >= gldate THEN 'Paid on time or earlier'
ELSE 'Not yet Overdue'
END
END)
END AS OverdueStatus
,CASE
WHEN openamount <> 0 AND duedate < @TodayinJulian
--Overdue
THEN DATEDIFF(DAY,@ReferenceDate,dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE (
CASE
WHEN openamount = 0 AND duedate < gldate
--Paid but late
THEN DATEDIFF(DAY, dbo.ufn_Sales_GetConventionalDateFromJulian(gldate),dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE
CASE
WHEN openamount = 0 AND duedate >= gldate
-- Paid on time or earlier
THEN DATEDIFF(DAY,dbo.ufn_Sales_GetConventionalDateFromJulian(gldate) , dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE
--'Not yet Overdue'
DATEDIFF(DAY,@ReferenceDate , dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
END
END)
END AS Days
,CASE
WHEN F.openamount <> 0 THEN F.openamount
ELSE F.GrossAmount*-1
END AS OverdueAmount
,CASE WHEN F.invoicedate <> 0
THEN
DATEADD(dd, RIGHT(F.invoicedate,3)-1,0)
+DATEADD(yy, LEFT(F.invoicedate,
CASE WHEN LEN(F.invoicedate)=5
THEN 2
ELSE 3
END
)+0,0)
END AS InvoiceDate
,CASE
WHEN F.duedate <> 0
THEN
DATEADD(dd,RIGHT(F.duedate,3)-1,0)
+DATEADD(yy,LEFT(F.duedate,CASE WHEN LEN(F.duedate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS DueDate
,CASE
WHEN F.checkitemdate <> 0
THEN
DATEADD(dd,RIGHT(F.checkitemdate,3)-1,0)
+DATEADD(yy,LEFT(F.checkitemdate,CASE WHEN LEN(F.checkitemdate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS PaiementDate
,CASE
WHEN F.gldate <> 0
THEN
DATEADD(dd,RIGHT(F.gldate,3)-1,0)
+DATEADD(yy,LEFT(F.gldate,CASE WHEN LEN(F.gldate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS GLDate
,F.PayStatus
,F.DocCompany
--,ISNULL(BusinessSector.ReportingSiteOrgID, F.OrgID)
,F.OrgID
,O.OrganisationDesc1
,O.HyperionCode
,F.AddressNum
,CS.[Ext/Int]
,C.CustomerID
,CS.CustomerName
,C.CustomerName
,F.DocNumber
,F.Doctype
,F.PayItem
,F.PayItemNumber
,F.PayItemDocType
,F.GrossAmount
,F.openamount
,F.TaxableAmount
,F.NonTaxableAmount
,F.Tax
,CURR.Currency--F.RPCRCDCurrencyCode
,O.CurrencyID
,E.MonthXRate
,E.ConstantXrate
,F.openamount * E.MonthXRate
,F.openamount * E.ConstantXrate
,F.BankAccount
,F.ObjectAccount
,F.Subsidiary
,F.DateOfLastSentReminder
,F.InvoiceNumber
,F.remark
,F.NoOfPayments
,F.AlphaName
,F.ItemNumberShort
,'sales2' AS LastUpdatedBy
,GETDATE() AS DateTimeLastUpdated
,0 AS Deleted
FROM
dbo.sales AS F WITH (NOLOCK)
LEFT OUTER JOIN customersource CS WITH (NOLOCK)
ON CS.ERPID = 1
AND F.AddressNum = CS.ERPCustomerCode
INNER JOIN customer C WITH (NOLOCK)
ON CS.CustomerID = C.CustomerID
INNER JOIN organisation O WITH (NOLOCK)
ON F.OrgID = O.OrgID
INNER JOIN currency CURR WITH (NOLOCK)
ON O.CurrencyID = CURR.CurrencyID
LEFT OUTER JOIN exchangerate E WITH (NOLOCK)
ON E.XrateScenarioTypeID = 1
AND E.Deleted = 0
AND E.XRateTypeID = 1
AND CURR.CurrencyID = E.XrateCurrID
AND YEAR(dbo.ufn_Sales_GetConventionalDateFromJulian(F.duedate)) = E.XRateYear
AND MONTH(dbo.ufn_Sales_GetConventionalDateFromJulian(F.duedate)) = E.XRateMonth
WHERE
(F.gldate > @StartDate OR F.gldate = 0) AND (F.duedate > @StartDate OR F.duedate = 0)
AND F.Deleted = 0
AND O.Deleted = 0
UNION
SELECT
F.duedate
,F.gldate
,F.invoicedate
,CASE
WHEN F.openamount <> 0 THEN 'Not yet Paid'
ELSE 'Paid'
END AS PaidStatus
,CASE
WHEN openamount <> 0 AND duedate < @TodayinJulian THEN 'Overdue'
ELSE (
CASE
WHEN openamount = 0 AND duedate < gldate THEN 'Paid but late'
ELSE
CASE
WHEN openamount = 0 AND duedate >= gldate THEN 'Paid on time or earlier'
ELSE 'Not yet Overdue'
END
END)
END AS OverdueStatus
,CASE
WHEN openamount <> 0 AND duedate < @TodayinJulian
--Overdue
THEN DATEDIFF(DAY,@ReferenceDate,dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE (
CASE
WHEN openamount = 0 AND duedate < gldate
--Paid but late
THEN DATEDIFF(DAY, dbo.ufn_Sales_GetConventionalDateFromJulian(gldate),dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE
CASE
WHEN openamount = 0 AND duedate >= gldate
-- Paid on time or earlier
THEN DATEDIFF(DAY,dbo.ufn_Sales_GetConventionalDateFromJulian(gldate) , dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE
--'Not yet Overdue'
DATEDIFF(DAY,@ReferenceDate , dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
END
END)
END AS Days
,CASE
WHEN F.openamount <> 0 THEN F.openamount
ELSE F.GrossAmount*-1
END AS OverdueAmount
,CASE WHEN F.invoicedate <> 0
THEN
DATEADD(dd, RIGHT(F.invoicedate,3)-1,0)
+DATEADD(yy, LEFT(F.invoicedate,
CASE WHEN LEN(F.invoicedate)=5
THEN 2
ELSE 3
END
)+0,0)
END AS InvoiceDate
,CASE
WHEN F.duedate <> 0
THEN
DATEADD(dd,RIGHT(F.duedate,3)-1,0)
+DATEADD(yy,LEFT(F.duedate,CASE WHEN LEN(F.duedate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS DueDate
,CASE
WHEN F.checkitemdate <> 0
THEN
DATEADD(dd,RIGHT(F.checkitemdate,3)-1,0)
+DATEADD(yy,LEFT(F.checkitemdate,CASE WHEN LEN(F.checkitemdate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS PaiementDate
,CASE
WHEN F.gldate <> 0
THEN
DATEADD(dd,RIGHT(F.gldate,3)-1,0)
+DATEADD(yy,LEFT(F.gldate,CASE WHEN LEN(F.gldate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS GLDate
,F.PayStatus
,F.DocCompany
--,ISNULL(BusinessSector.ReportingSiteOrgID, F.OrgID)
,F.OrgID
,O.OrganisationDesc1
,O.HyperionCode
,F.AddressNum
,CS.[Ext/Int]
,C.CustomerID
,CS.CustomerName
,C.CustomerName
,F.DocNumber
,F.Doctype
,F.PayItem
,F.PayItemNumber
,F.PayItemDocType
,F.GrossAmount
,F.openamount
,F.TaxableAmount
,F.NonTaxableAmount
,F.Tax
,CURR.Currency--F.RPCRCDCurrencyCode
,O.CurrencyID
,E.MonthXRate
,E.ConstantXrate
,F.openamount * E.MonthXRate
,F.openamount * E.ConstantXrate
,F.BankAccount
,F.ObjectAccount
,F.Subsidiary
,F.DateOfLastSentReminder
,F.InvoiceNumber
,F.remark
,F.NoOfPayments
,F.AlphaName
,F.ItemNumberShort
,'sales2' AS LastUpdatedBy
,GETDATE() AS DateTimeLastUpdated
,0 AS Deleted
FROM
dbo.sales_historicalAS F WITH (NOLOCK)
LEFT OUTER JOIN customerSource CS WITH (NOLOCK)
ON CS.ERPID = 1
AND F.AddressNum = CS.ERPCustomerCode
INNER JOIN customer C WITH (NOLOCK)
ON CS.CustomerID = C.CustomerID
INNER JOIN organisation O WITH (NOLOCK)
--ON ISNULL(BusinessSector.ReportingSiteOrgID, F.OrgID) = O.OrgID
ON F.OrgID = O.OrgID
INNER JOIN currency CURR WITH (NOLOCK)
ON O.CurrencyID = CURR.CurrencyID
LEFT OUTER JOIN exchangerate E WITH (NOLOCK)
ON E.XrateScenarioTypeID = 1
AND E.Deleted = 0
AND E.XRateTypeID = 1
AND CURR.CurrencyID = E.XrateCurrID
AND YEAR(dbo.ufn_Sales_GetConventionalDateFromJulian(F.duedate)) = E.XRateYear
AND MONTH(dbo.ufn_Sales_GetConventionalDateFromJulian(F.duedate)) = E.XRateMonth
WHERE
(F.gldate <= @StartDate OR F.duedate <= @StartDate)
AND (F.openamount <> 0 AND duedate < @TodayinJulian)
AND F.Deleted = 0
AND O.Deleted = 0
UNION
SELECT
F.duedate
,F.gldate
,F.invoicedate
,CASE
WHEN F.openamount <> 0 THEN 'Not yet Paid'
ELSE 'Paid'
END AS PaidStatus
,CASE
WHEN openamount <> 0 AND duedate < @TodayinJulian THEN 'Overdue'
ELSE (
CASE
WHEN openamount = 0 AND duedate < gldate THEN 'Paid but late'
ELSE
CASE
WHEN openamount = 0 AND duedate >= gldate THEN 'Paid on time or earlier'
ELSE 'Not yet Overdue'
END
END)
END AS OverdueStatus
,CASE
WHEN openamount <> 0 AND duedate < @TodayinJulian
--Overdue
THEN DATEDIFF(DAY,@ReferenceDate,dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE (
CASE
WHEN openamount = 0 AND duedate < gldate
--Paid but late
THEN DATEDIFF(DAY, dbo.ufn_Sales_GetConventionalDateFromJulian(gldate),dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE
CASE
WHEN openamount = 0 AND duedate >= gldate
-- Paid on time or earlier
THEN DATEDIFF(DAY,dbo.ufn_Sales_GetConventionalDateFromJulian(gldate) , dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
ELSE
--'Not yet Overdue'
DATEDIFF(DAY,@ReferenceDate , dbo.ufn_Sales_GetConventionalDateFromJulian(duedate))
END
END)
END AS Days
,CASE
WHEN F.openamount <> 0 THEN F.openamount
ELSE F.GrossAmount*-1
END AS OverdueAmount
,CASE WHEN F.invoicedate <> 0
THEN
DATEADD(dd, RIGHT(F.invoicedate,3)-1,0)
+DATEADD(yy, LEFT(F.invoicedate,
CASE WHEN LEN(F.invoicedate)=5
THEN 2
ELSE 3
END
)+0,0)
END AS InvoiceDate
,CASE
WHEN F.duedate <> 0
THEN
DATEADD(dd,RIGHT(F.duedate,3)-1,0)
+DATEADD(yy,LEFT(F.duedate,CASE WHEN LEN(F.duedate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS DueDate
,CASE
WHEN F.checkitemdate <> 0
THEN
DATEADD(dd,RIGHT(F.checkitemdate,3)-1,0)
+DATEADD(yy,LEFT(F.checkitemdate,CASE WHEN LEN(F.checkitemdate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS PaiementDate
,CASE
WHEN F.gldate <> 0
THEN
DATEADD(dd,RIGHT(F.gldate,3)-1,0)
+DATEADD(yy,LEFT(F.gldate,CASE WHEN LEN(F.gldate)=5 THEN 2 ELSE 3 END)+0,0)
ELSE NULL
END AS GLDate
,F.PayStatus
,F.DocCompany
--,ISNULL(BusinessSector.ReportingSiteOrgID, F.OrgID)
,F.OrgID
,O.OrganisationDesc1
,O.HyperionCode
,F.AddressNum
,CS.[Ext/Int]
,C.CustomerID
,CS.CustomerName
,C.CustomerName
,F.DocNumber
,F.Doctype
,F.PayItem
,F.PayItemNumber
,F.PayItemDocType
,F.GrossAmount
,F.openamount
,F.TaxableAmount
,F.NonTaxableAmount
,F.Tax
,CURR.Currency--F.RPCRCDCurrencyCode
,O.CurrencyID
,E.MonthXRate
,E.ConstantXrate
,F.openamount * E.MonthXRate
,F.openamount * E.ConstantXrate
,F.BankAccount
,F.ObjectAccount
,F.Subsidiary
,F.DateOfLastSentReminder
,F.InvoiceNumber
,F.remark
,F.NoOfPayments
,F.AlphaName
,F.ItemNumberShort
,'sales2' AS LastUpdatedBy
,GETDATE() AS DateTimeLastUpdated
,0 AS Deleted
FROM
sales AS F WITH (NOLOCK)
LEFT OUTER JOIN customerSource CS WITH (NOLOCK)
ON CS.ERPID = 1
AND F.AddressNum = CS.ERPCustomerCode
INNER JOIN customer C WITH (NOLOCK)
ON CS.CustomerID = C.CustomerID
INNER JOIN organisation O WITH (NOLOCK)
ON F.OrgID = O.OrgID
INNER JOIN currency CURR WITH (NOLOCK)
ON O.CurrencyID = CURR.CurrencyID
LEFT OUTER JOIN exchangerate E WITH (NOLOCK)
ON E.XrateScenarioTypeID = 1
AND E.Deleted = 0
AND E.XRateTypeID = 1
AND CURR.CurrencyID = E.XrateCurrID
AND YEAR(dbo.ufn_Sales_GetConventionalDateFromJulian(F.duedate)) = E.XRateYear
AND MONTH(dbo.ufn_Sales_GetConventionalDateFromJulian(F.duedate)) = E.XRateMonth
WHERE
(F.gldate <= @StartDate OR F.duedate <= @StartDate)
AND (F.openamount <> 0 AND duedate < @TodayinJulian)
AND F.Deleted = 0
AND O.Deleted = 0
OPTION (MAXDOP 12)