cancel
Showing results for 
Search instead for 
Did you mean: 

Year to Date query

Former Member
0 Kudos

SELECT T0.CardName, sum(T1.Price) [Year To Date], '0' [Previous] FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocDate Between DATEADD(year,-1,GETDATE()) AND GETDATE() GROUP BY T0.CardName

UNION

SELECT T2.CardName, '0' [Year To Date], sum(T1.Price) [Previous] FROM OINV T2 INNER JOIN INV1 T1 ON T2.DocEntry = T1.DocEntry WHERE T2.DocDate Between DATEADD(year,-2,GETDATE()) AND DATEADD(year,-1,GETDATE()) GROUP BY T2.CardName

ORDER BY T0.CardName asc

Gives me, for example:

A 100 0

A 0 150

B 200 0

B 0 50

C 300 0

D 0 550

How would I go about joining them together into:

A 100 150

B 200 50

C 300 0

D 0 550

Thanks,

Jason

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

SELECT T1.CardName, sum([YearToDate]), sum(Previous)

FROM OINV T1, (

SELECT T0.CardName [BP], sum(T1.Price) [Year To Date], '0' [Previous] FROM OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocDate Between DATEADD(year,-1,GETDATE()) AND GETDATE() GROUP BY T0.CardName

UNION

SELECT T2.CardName [BP], '0' [Year To Date], sum(T1.Price) [Previous] FROM OINV T2 INNER JOIN INV1 T1 ON T2.DocEntry = T1.DocEntry WHERE T2.DocDate Between DATEADD(year,-2,GETDATE()) AND DATEADD(year,-1,GETDATE()) GROUP BY T2.CardName

) as d(BP, YearToDate, Previous)

WHERE d.BP = T1.CardName

GROUP BY T1.CardName

ORDER BY T1.CardName

Solved.