Home Forums SQL Server 2008 SQL Server Newbies Need to find new vehicle service records for last six months RE: Need to find new vehicle service records for last six months

  • just test code tags

    Select FSA3.CustAccount,CT1.WIKA_DUNBRAD, Sum(FSA3.LineAmount)AS Last12MonthsSalesAmt,FSA3.ITEMID,x.FirstSaleDateinLast12Months,'NewCustomer' AS Status

    From (

    Select Cast (getdate() AS DATE) AS SnapShotDateCustaccount,FSA1.CUSTACCOUNT,sum(FSA1.lineamount) AS AmtLocalCurrency,sum(FSA1.lineamount) AS AmtUSD,min(FSA1.invoicedate) AS FirstSaleDateinLast12Months,DATEADD(mm, DATEDIFF(mm, 0, DATEADD(DAY, -(DAY(GETDATE())), GETDATE())) - 11, 0) AS TwelveMonthsAgo,DATEADD(DAY, -(DAY(GETDATE())), GETDATE()) AS LastMonth

    FROM Fact_SalesActual FSA1

    Where Cast (FSA1.Invoicedate AS DATE) between DATEADD(mm, DATEDIFF(mm, 0, DATEADD(DAY, -(DAY(GETDATE())), GETDATE())) - 11, 0) and DATEADD(DAY, -(DAY(GETDATE())), GETDATE())

    AND NOT EXISTS (Select *

    FROM Fact_SalesActual FSA2

    WHERE FSA1.CustAccount=FSA2.CustAccount AND Cast (FSA2.Invoicedate AS DATE) between DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 36, 0) and DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 12, 0))

    group by FSA1.Custaccount) X

    LEFT JOIN FACT_SalesActual FSA3

    ON FSA3.CustAccount = x.CUSTACCOUNT

    LEFT JOIN dbo.custtable CT1 on CT1.Accountnum=FSA3.CustAccount

    WHERE Cast (FSA3.Invoicedate AS DATE) between DATEADD(mm, DATEDIFF(mm, 0, DATEADD(DAY, -(DAY(GETDATE())), GETDATE())) - 11, 0) and DATEADD(DAY, -(DAY(GETDATE())), GETDATE())

    Group by FSA3.CustAccount,CT1.WIKA_DunBrad,FSA3.Itemid,x.FirstSaleDateinLast12Months

    UNION ALL

    Select FSA3.CustAccount,CT1.WIKA_DUNBRAD,Sum(FSA3.LineAmount)AS SixMonthsCosts,FSA3.ITEMID,min(FSA3.InvoiceDate) AS FirstSaleDateinLast12Months,'ExistingCustomer' AS Status

    FROM Fact_SalesActual FSA3

    LEFT JOIN Custtable CT1 on CT1.AccountNum=FSA3.CustAccount

    Where FSA3.CustAccount NOT IN (

    (Select FSA1.CustAccount

    FROM Fact_SalesActual FSA1

    Where Cast (FSA1.InvoiceDate AS DATE) between DATEADD(mm, DATEDIFF(mm, 0, DATEADD(DAY, -(DAY(GETDATE())), GETDATE())) - 11, 0) and DATEADD(DAY, -(DAY(GETDATE())), GETDATE())

    AND NOT EXISTS (Select *

    FROM Fact_SalesActual FSA2

    Where Cast (FSA2.InvoiceDate AS DATE) between DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 36, 0) and DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 12, 0))

    group by FSA1.CustAccount))

    Group by FSA3.CustAccount,FSA3.ItemId,CT1.WIKA_DunBrad