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 - 2012-07-18 : 09:50:56
|
I have the following Stored Procedure that prompts for a year and then gives total Sales and Costs for that year. Is there a way I can also add columns for the previous year?ALTER procedure [dbo].[SalesYear2]@year int asSELECT TOP (100) PERCENT dbo.cicmpy.SalesPersonNumber, dbo.arslmfil_SQL.slspsn_name, dbo.oehdrhstCredit.cus_no, SUM(dbo.oehdrhstCredit.Sales) AS TotalSales, SUM(dbo.oehdrhstCredit.tot_cost) AS TotalCostFROM dbo.arslmfil_SQL INNER JOINdbo.cicmpy ON dbo.arslmfil_SQL.humres_id = dbo.cicmpy.SalesPersonNumber RIGHT OUTER JOINdbo.oehdrhstCredit ON dbo.cicmpy.debcode = dbo.oehdrhstCredit.cus_noWHERE (YEAR(dbo.oehdrhstCredit.inv_dt) = @year) GROUP BY dbo.oehdrhstCredit.slspsn_no, dbo.oehdrhstCredit.cus_no, dbo.arslmfil_SQL.slspsn_name, dbo.cicmpy.SalesPersonNumberORDER BY dbo.cicmpy.SalesPersonNumber |
|
|
webfred
Master Smack Fu Yak Hacker
8781 Posts |
Posted - 2012-07-18 : 09:56:22
|
change thisWHERE (YEAR(dbo.oehdrhstCredit.inv_dt) = @year) toWHERE (YEAR(dbo.oehdrhstCredit.inv_dt) >= @year - 1 and YEAR(dbo.oehdrhstCredit.inv_dt) <= @year) No, you're never too old to Yak'n'Roll if you're too young to die. |
 |
|
|
Vack
Aged Yak Warrior
530 Posts |
Posted - 2012-07-18 : 09:59:15
|
| I'm not sure that solves my issue. Won't that just lump last year with the current year. Currently it gives me the following columns.Total Sales Total Cost. I would likeTotal Sales Total Cost Total_SalesLY Total_CostLY |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-07-18 : 10:10:08
|
| [code]ALTER procedure [dbo].[SalesYear2]@year int asSELECT TOP (100) PERCENT dbo.cicmpy.SalesPersonNumber, dbo.arslmfil_SQL.slspsn_name, dbo.oehdrhstCredit.cus_no, SUM(CASE WHEN dbo.oehdrhstCredit.inv_dt >=DATEADD(yy,@year-1900,0) AND dbo.oehdrhstCredit.inv_dt < DATEADD(yy,@year-1899,0) THEN dbo.oehdrhstCredit.Sales ELSE 0 END) AS TotalSales, SUM(CASE WHEN dbo.oehdrhstCredit.inv_dt >=DATEADD(yy,@year-1900,0) AND dbo.oehdrhstCredit.inv_dt < DATEADD(yy,@year-1899,0) THEN dbo.oehdrhstCredit.tot_cost ELSE 0 END) AS TotalCost,SUM(CASE WHEN dbo.oehdrhstCredit.inv_dt >=DATEADD(yy,@year-1901,0) AND dbo.oehdrhstCredit.inv_dt < DATEADD(yy,@year-1900,0) THEN dbo.oehdrhstCredit.Sales ELSE 0 END) AS TotalSalesLY, SUM(CASE WHEN dbo.oehdrhstCredit.inv_dt >=DATEADD(yy,@year-1901,0) AND dbo.oehdrhstCredit.inv_dt < DATEADD(yy,@year-1900,0) THEN dbo.oehdrhstCredit.tot_cost ELSE 0 END) AS TotalCostLYFROM dbo.arslmfil_SQL INNER JOINdbo.cicmpy ON dbo.arslmfil_SQL.humres_id = dbo.cicmpy.SalesPersonNumber RIGHT OUTER JOINdbo.oehdrhstCredit ON dbo.cicmpy.debcode = dbo.oehdrhstCredit.cus_noWHERE dbo.oehdrhstCredit.inv_dt > = DATEADD(yy,@year-1901,0)AND dbo.oehdrhstCredit.inv_dt < DATEADD(yy,@year-1899,0)GROUP BY dbo.oehdrhstCredit.slspsn_no, dbo.oehdrhstCredit.cus_no, dbo.arslmfil_SQL.slspsn_name, dbo.cicmpy.SalesPersonNumberORDER BY dbo.cicmpy.SalesPersonNumber[/code]------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
|
|
|
|
|