sql 实现两年同月数量、金额对比就该怎么写?哪位高手指点下呀。

wufayou2015 2015-06-11 11:52:59
表结构如下:
领用日期 物品名称 规格 单价 数量 领用人
2014-01-01 U盘 64G 35 1 张三
2014-01-01 U盘 32G 30 2 张三
2014-01-01 U盘 32G 35 1 李四
2015-01-01 U盘 32G 30 3 李四
我要用sql语句查询出以下效果,请问sql语句要怎样写?
1月领用人同期对比表
物品名称 领用人 2014年1月数量 2014年1月金额 2015年1月数量 2015年1月金额 数量增减 金额增减
U盘 张三 3 95 0 0 -3 -95
U盘 李四 1 35 3 90 2 55
...全文
359 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hery2002 2015-06-11
  • 打赏
  • 举报
回复
这个报表里面实现比较容易, SQL里面写,反而整复杂了。
道玄希言 2015-06-11
  • 打赏
  • 举报
回复
静态


select
t1.物品名称, t1.领用人, t1.[1月数量], t1.[1月金额], 
t2.[1月数量], t2.[1月金额], (t1.[1月数量]-t2.[1月数量]) 数量增减,(t1.[1月金额]-t2.[1月金额]) 金额增减
from
(SELECT 物品名称, 领用人
    ,SUM(CASE WHEN MONTH(领用日期)=1 THEN 数量 END)[1月数量],SUM(CASE WHEN MONTH(领用日期)=1 THEN 单价*数量 END)[1月金额]
FROM TB GROUP BY 物品名称 where YEAR(领用日期) = YEAR(getdate())) as t1
left join 
(SELECT 物品名称, 领用人
    ,SUM(CASE WHEN MONTH(领用日期)=1 THEN 数量 END)[1月数量],SUM(CASE WHEN MONTH(领用日期)=1 THEN 单价*数量 END)[1月金额]
FROM TB GROUP BY 物品名称 where YEAR(领用日期) = (YEAR(getdate())-1)) as t2
on t1.物品名称 = t2.物品名称 and t1.领用人 = t2.领用人

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧