Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
Vack
Aged Yak Warrior
530 Posts |
Posted - 2009-05-15 : 15:14:34
|
| Currently the following displays data as:Item_no YearVal Jan Feb March..... ABC 2009 333 233 444 ABC 2008 323 345 543ALTER PROCEDURE [dbo].[UsageCurrentYear]ASSELECT item_no,Year(doc_dt) as YearVal,SUM(CASE WHEN DATEPART(mm,doc_dt)=1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS January,SUM(CASE WHEN DATEPART(mm,doc_dt)=2 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS Feb,SUM(CASE WHEN DATEPART(mm,doc_dt)=3 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS March,SUM(CASE WHEN DATEPART(mm,doc_dt)=4 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS April,SUM(CASE WHEN DATEPART(mm,doc_dt)=5 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS May,SUM(CASE WHEN DATEPART(mm,doc_dt)=6 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS June,SUM(CASE WHEN DATEPART(mm,doc_dt)=7 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS July,SUM(CASE WHEN DATEPART(mm,doc_dt)=8 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS Aug,SUM(CASE WHEN DATEPART(mm,doc_dt)=9 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS Sept,SUM(CASE WHEN DATEPART(mm,doc_dt)=10 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS Oct,SUM(CASE WHEN DATEPART(mm,doc_dt)=11 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS Nov,SUM(CASE WHEN DATEPART(mm,doc_dt)=12 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS Dec--SUM(CASE WHEN DATEPART(mm,doc_dt)=1 THEN quantity ELSE 0 END) AS January,--SUM(CASE WHEN DATEPART(mm,doc_dt)=2 THEN quantity ELSE 0 END) AS February,--SUM(CASE WHEN DATEPART(mm,doc_dt)=3 THEN quantity ELSE 0 END) AS March,--SUM(CASE WHEN DATEPART(mm,doc_dt)=4 THEN quantity ELSE 0 END) AS April,--SUM(CASE WHEN DATEPART(mm,doc_dt)=5 THEN quantity ELSE 0 END) AS May,--SUM(CASE WHEN DATEPART(mm,doc_dt)=6 THEN quantity ELSE 0 END) AS June,--SUM(CASE WHEN DATEPART(mm,doc_dt)=7 THEN quantity ELSE 0 END) AS July,--SUM(CASE WHEN DATEPART(mm,doc_dt)=8 THEN quantity ELSE 0 END) AS August,--SUM(CASE WHEN DATEPART(mm,doc_dt)=9 THEN quantity ELSE 0 END) AS September,--SUM(CASE WHEN DATEPART(mm,doc_dt)=10 THEN quantity ELSE 0 END) AS October,--SUM(CASE WHEN DATEPART(mm,doc_dt)=11 THEN quantity ELSE 0 END) AS November,--SUM(CASE WHEN DATEPART(mm,doc_dt)=12 THEN quantity ELSE 0 END) AS Decemberfrom iminvtrx_sqlwhere doc_type = 'I' or (source = 'O' and doc_type = 'R') anddoc_dt>= DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)AND doc_dt< DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0)group by item_no, year(doc_dt)order by item_noIs there any way to change it so it puts all the data into one record?Item_no Jancurrent FebcurrentMarchcurrent...JanLastYear FebLastYear.. ABC 333 233 444 ABC 323 345 543 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2009-05-16 : 02:59:56
|
| [code]ALTER PROCEDURE [dbo].[UsageCurrentYear]ASSELECT item_no,SUM(CASE WHEN DATEPART(mm,doc_dt)=1 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS JanuaryCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=2 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS FebCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=3 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS MarchCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=4 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS AprilCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=5 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS MayCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=6 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS JuneCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=7 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS JulyCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=8 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS AugCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=9 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS SeptCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=10 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS OctCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=11 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS NovCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=12 AND year(doc_dt) = year(GETDATE()) THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS DecCurrent,SUM(CASE WHEN DATEPART(mm,doc_dt)=1 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS JanuaryLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=2 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS FebLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=3 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS MarchLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=4 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS AprilLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=5 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS MayLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=6 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS JuneLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=7 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS JulyLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=8 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS AugLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=9 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS SeptLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=10 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS OctLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=11 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS NovLastYear,SUM(CASE WHEN DATEPART(mm,doc_dt)=12 AND year(doc_dt) = year(GETDATE())-1 THEN CASE WHEN doc_type = 'I' THEN quantity WHEN doc_type = 'R' THEN -1 * quantity END ELSE 0 END) AS DecLastYearfrom iminvtrx_sqlwhere doc_type = 'I' or (source = 'O' and doc_type = 'R') anddoc_dt>= DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)AND doc_dt< DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0)group by item_noorder by item_no[/code] |
 |
|
|
|
|
|
|
|