我搜索并尝试了一些我发现的东西的变化,但是我觉得我觉得应该很容易。
示例数据包括:
LOCATION, SALES, MONTH, YEAR Location1, 100, 4, 2012 Location1, 130, 4, 2013
我正在尝试编写一个Select语句,允许我显示上个月/年的销售额与当前月/年的比较。
理想情况下,结果如下:
LOCATION, [4/2012 Sales], [4/2013 Sales] Location1, 100, 130
感谢任何帮助。
答案 0 :(得分:6)
您没有指定正在使用的数据库,但可以使用带有CASE
的聚合函数将行数据转换为列:
select location,
sum(case when year = 2012 and month = 4 then sales end) Sales_042012,
sum(case when year = 2013 and month = 4 then sales end) Sales_042013
from yt
group by location;
作为旁注,您不应将month
和year
存储在不同的列中。您应该存储日期时间列。
答案 1 :(得分:5)
你可以在同一个地点和月份加入桌子,但是去年。
declare @tbl table (location varchar(50), sales int, mth int, yr int)
insert @tbl values ('loc1', 100, 4, 2012)
insert @tbl values ('loc1', 110, 5, 2012)
insert @tbl values ('loc1', 120, 6, 2012)
insert @tbl values ('loc1', 130, 7, 2012)
insert @tbl values ('loc1', 140, 8, 2012)
insert @tbl values ('loc1', 200, 4, 2013)
insert @tbl values ('loc1', 210, 5, 2013)
insert @tbl values ('loc1', 220, 6, 2013)
insert @tbl values ('loc1', 230, 7, 2013)
insert @tbl values ('loc1', 240, 8, 2013)
select t1.location, t1.mth, t1.yr, t1.sales [curr_sales], t2.sales [prev_sales]
from @tbl t1
left join @tbl t2
on t1.location = t2.location
and t1.mth = t2.mth
and t1.yr - 1 = t2.yr