问一个SQL语句

nightfallrove 2004-06-18 08:28:55
有一个表名为sale其部分结构和示例数据如下
编号, 月分,金额
P001 01 100

P002 01 150

P001 02 300

P002 02 200
现在要根据用户输入的月分查出一个如下结构的记录集
编号 期初数 本月数 期末数

比如用户输入02查询结果就应该是
P001 100 300 400
P002 150 200 350
就是说期初数是用户输入的月份以前的所有月的金额之和
本月数是用户输入的月分的金额
期末数是上两个数据的和
这个查询该怎么写?谢谢
(编号,月分)是主码
...全文
172 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CsdnRob 2004-07-01
  • 打赏
  • 举报
回复
ding
nightfallrove 2004-06-20
  • 打赏
  • 举报
回复
谢谢,
结帐了。
pengda1i 2004-06-18
  • 打赏
  • 举报
回复
冒牌力争做到假冒不伪劣
zjcxc 元老 2004-06-18
  • 打赏
  • 举报
回复
冒牌的写法存在一个问题,如果本月没有发生,而上月有发生的话,则不会被查询出来
zjcxc 元老 2004-06-18
  • 打赏
  • 举报
回复

--定义要查询的参数
declare @月份 char(2)
set @月份='02'

--查询语句
select 编号=isnull(a.编号,b.编号)
,期初数=isnull(a.金额,0)
,本月数=isnull(b.金额,0)
,期末数=isnull(a.金额,0)+isnull(b.金额,0)
from(
--计算期初
select 编号,金额=sum(金额)
from sale
where 月份<@月份
group by 编号
)a full join(
--计算本月
select 编号,金额=sum(金额)
from sale
where 月份=@月份
group by 编号
)b on a.编号=b.编号
nightfallrove 2004-06-18
  • 打赏
  • 举报
回复

什么东西都有假冒伪劣啊
不过楼上不错
已经真假难辨了,呵呵,
谢谢
pengda1i 2004-06-18
  • 打赏
  • 举报
回复
select 编号,
isnull((select sum(金额) from sale where 编号=a.编号 and 月分<a.月分),0) as 期初数,
金额 as 本月数,
isnull((select sum(金额) from sale where 编号=a.编号 and 月分<=a.月分),0) as 期末数
from sale a
where 月分='02'
pengda1i 2004-06-18
  • 打赏
  • 举报
回复
select 编号,
isnull((select sum(金额) from sale where 编号=a.编号 and 月分<a.月分),0) as 期初数,
sum(金额) as 本月数,
isnull((select sum(金额) from sale where 编号=a.编号 and 月分<=a.月分),0) as 期末数
from sale a
where 月分='02'
group by 编号

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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