求关于累计的sql语句?

jdbreeze 2005-05-10 01:21:02
表a
t tsub date money
--------------------------------
1 1 05-5-1 1000
1 2 05-5-1 1200
1 1 05-6-1 2000
1 2 05-6-1 2200

要得到
t date money leiji
-------------------------------
1 05-5-1 2200 2200
1 05-6-1 4200 6400
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuet 2005-05-10
  • 打赏
  • 举报
回复
我也遇到类似的问题
ljh date danjia zongjia shuliang
123 2002 50 100 2
123 2003 80 200 4
220 2002 33 100 3
123 2002 60 180 3
320 2004 70 280 4

希望能在表中找出ljh 和 date都重复的行,将对应的总价sum,数量sum avg(danjia)更新到其中的一行中,然后删掉多余的行
ljh date danjia zongjia shuliang
123 2002 56 280 5
123 2003 80 320 4
220 2002 33 100 3
320 2004 70 280 4



我用以下语句找出了重复行
SELECT a.* from table1 as a,(select ljh,date,count(*) as yy from table1 group by ljh,rq) as b
where b.ljh=a.ljh and b.date=a.date and b.yy>1 order by a.ljh,a.date


但想要更新时就怎么也不行,对sql 实在是不熟,大家帮帮忙,感激不尽
jdbreeze 2005-05-10
  • 打赏
  • 举报
回复
to 光芒和流星

这样写sql server提示后面还要跟group by A.t,A.date,A.money。
但是我跟了以后还是报错:subquery return more than 1 column

t还有2, 3....
dxai 2005-05-10
  • 打赏
  • 举报
回复
将问题分解:
一、对date分组求money
select T,date,sum(money) into #T from Table group by date,T
select * from #T
得到如下 :
T date money
----------- ------------------------------------------- -----------------------1 2005-05-01 00:00:00.000 2200.00
1 2005-06-01 00:00:00.000 4200.00
二、
对得到的结果集汇总:
Select T.T,T.date,T.money ,'leiji'=(Select sum(money) from #t where date<=T.date)
from #T as T
结果如下:
T date money leiji
----------- ------------------------------------------------------ ---------------------------------------- ----------------------------------------
1 2005-05-01 00:00:00.000 2200.00 2200.00
1 2005-06-01 00:00:00.000 4200.00 6400.00
1 2008-05-01 00:00:00.000 10000.00 16400.00

(所影响的行数为 3 行)


qudymeteor 2005-05-10
  • 打赏
  • 举报
回复
前人之鉴,帮你修改了一下,呵呵

select B.t,B.date,B.money,(select sum(money) from a where date<=B.date)
from (select t, date, sum(money) as money from a group by t,date ) B
hsj20041004 2005-05-10
  • 打赏
  • 举报
回复

应该是这样的,你试一下!!!
select A.t,A.date,A.money,(select sum(money) from a where date<=A.date) as leiji from
(select t, date, sum(money) from a group by t,date)A
hsj20041004 2005-05-10
  • 打赏
  • 举报
回复
select A.t,A.date,A.money,(select sum(money) from a where date<A.date) as leiji from
(select t, date, sum(money) from a group by t,date)A

34,590

社区成员

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

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