一条SQL语句

zhoujianhei 2008-12-10 12:03:02
表 dlxf
dwid rq[日期] zdl[总电量]
01 2008-09-09 2568
02 2008-08-12 3685
03 2008-07-06 4851
04 2008-08-16 1658

想得到如下数据
yf[月份] bydl[本月电量] bnlj[本年累计]
2008-07 4851 4851 [2008-07至2008-01月份总电量累计]
2008-08 1658 10194[2008-08至2008-01月份总电量累计]
2008-09 2568 12762[2008-09至2008-01月份总电量累计]

请教该如何写SQL语句。

...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

select 月份=convert(varchar(7),rq,120), bydl=min(zdl), bnlj=(select sum(zdl) from tb where CONVERT(VARCHAR(7),RQ,120)<=CONVERT(VARCHAR(7),t.RQ,120))
from tb t
group by convert(varchar(7),rq,120)

2008-07 4851 4851
2008-08 1658 10194
2008-09 2568 12762
dawugui 2008-12-10
  • 打赏
  • 举报
回复
DECLARE @TB TABLE(dwid VARCHAR(2),    rq SMALLDATETIME,        zdl INT)
INSERT @TB
SELECT '01', '2008-09-09', 2568 UNION ALL
SELECT '02', '2008-08-12', 3685 UNION ALL
SELECT '03', '2008-07-06', 4851 UNION ALL
SELECT '04', '2008-08-16', 1658

select convert(varchar(7),m.rq,120) yf , sum(m.zdl) bydl,
(select sum(n.zdl) from @tb n where convert(varchar(7),n.rq,120) <= convert(varchar(7),m.rq,120)) bnlj
from @tb m
group by convert(varchar(7),rq,120)

/*
yf bydl bnlj
------- ----------- -----------
2008-07 4851 4851
2008-08 5343 10194
2008-09 2568 12762

(所影响的行数为 3 行)
*/
csdyyr 2008-12-10
  • 打赏
  • 举报
回复
DECLARE @TB TABLE(dwid VARCHAR(2),    rq SMALLDATETIME,        zdl INT)
INSERT @TB
SELECT '01', '2008-09-09', 2568 UNION ALL
SELECT '02', '2008-08-12', 3685 UNION ALL
SELECT '03', '2008-07-06', 4851 UNION ALL
SELECT '04', '2008-08-16', 1658

SELECT CONVERT(VARCHAR(7),RQ,120) AS RQ,
SUM(ZDL) AS BYDL,
BNLJ=(SELECT SUM(ZDL) FROM @TB WHERE CONVERT(VARCHAR(7),RQ,120)<=CONVERT(VARCHAR(7),A.RQ,120))
FROM @TB A
GROUP BY CONVERT(VARCHAR(7),RQ,120)
/*

RQ BYDL BNLJ
------- ----------- -----------
2008-07 4851 4851
2008-08 5343 10194
2008-09 2568 12762
*/
super_iven 2008-12-10
  • 打赏
  • 举报
回复
UP
Rewiah 2008-12-10
  • 打赏
  • 举报
回复
select yf,bydl,
(select sum(zdl) from dlxf where convert(varchar(7),rq,120)<=t.yf) as bnlj
from (
select
convert(varchar(7),rq,120) as yf,
sum(zdl) as bydl
from dlxf
group by convert(varchar(7),rq,120)
) as t
Rewiah 2008-12-10
  • 打赏
  • 举报
回复
数据不对哦

34,590

社区成员

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

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