这样的select语句怎么写?

cupwei 2010-11-09 02:22:14
现在有这样的数据表结构:
zid data
1 0.5
2 1.0
3 1.5
4 3.5

现在想将第二行开始将data相加 请教下这个select 语句怎么写?
...全文
202 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
abuying 2010-11-09
  • 打赏
  • 举报
回复
create table [#TB]([zid] int,[data] numeric(2,1))
insert [#TB]
select 1,0.5 union all
select 2,1.0 union all
select 3,1.5 union all
select 4,3.5
GO

select *,sumData=(select isnull(sum(data),0) from #tb t where t.zid<#tb.zid) from #tb
--t.zid<#tb.zid
/**
zid data sumData
----------- --------------------------------------- ---------------------------------------
1 0.5 0.0
2 1.0 0.5
3 1.5 1.5
4 3.5 3.0

(4 行受影响)
**/
abuying 2010-11-09
  • 打赏
  • 举报
回复
create table [#TB]([zid] int,[data] numeric(2,1))
insert [#TB]
select 1,0.5 union all
select 2,1.0 union all
select 3,1.5 union all
select 4,3.5
GO

select *,sumData=(select isnull(sum(data),0) from #tb t where t.zid<#tb.zid) from #tb
--t.zid<#tb.zid
/**
zid data sumData
----------- --------------------------------------- ---------------------------------------
1 0.5 0.0
2 1.0 0.5
3 1.5 1.5
4 3.5 3.0

(4 行受影响)
**/
renwenli07461 2010-11-09
  • 打赏
  • 举报
回复
SELECT SUM(data)-(SELECT DISTINCT [data] FROM [表名] WHERE zid=(SELECT MIN(zid) FROM [表名]) ) FROM [表名]
王向飞 2010-11-09
  • 打赏
  • 举报
回复
最后只显示两行??
第一行
union
你的sum()累加行?
id只是一个演示,你可以使用row_number()替换或用临时表替换,一个道理。
cupwei 2010-11-09
  • 打赏
  • 举报
回复
我的意思就是数据库中有内行 我就显示除去第一行以外的n-1行 但是id不一定是从1开始的
cupwei 2010-11-09
  • 打赏
  • 举报
回复
我意思是比如是四行 我就将后三行显示并相加 如果有五行就将后四行相加。。。以此类推
振乾 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 js_szy 的回复:]
SQL code
--> 测试数据: #tb
if object_id('tempdb.dbo.#tb') is not null drop table #tb
go
create table #tb (zid int,data numeric(2,1))
insert into #tb
select 1,0.5 union all
select 2,1.0 union all
s……
[/Quote]

正解 支持。
王向飞 2010-11-09
  • 打赏
  • 举报
回复

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO

---->建表
create table [TB]([zid] int,[data] numeric(2,1))
insert [TB]
select 1,0.5 union all
select 2,1.0 union all
select 3,1.5 union all
select 4,3.5
GO



--> 查询结果

select [zid] ,
[data] =(select sum(isnull([data],0)) from [TB] where zid <= a.[zid])
from [TB] a
--> 删除表格
--DROP TABLE [TB]

--zid data
1 0.5
2 1.5
3 3.0
4 6.5

supersunshine 2010-11-09
  • 打赏
  • 举报
回复
你想将结果显示成什么样子的?
华夏小卒 2010-11-09
  • 打赏
  • 举报
回复
--> 测试数据: #tb
if object_id('tempdb.dbo.#tb') is not null drop table #tb
go
create table #tb (zid int,data numeric(2,1))
insert into #tb
select 1,0.5 union all
select 2,1.0 union all
select 3,1.5 union all
select 4,3.5

select zid,
data=(select sum(data) from #tb where zid<=t.zid)
from #tb t

zid data
----------- ---------------------------------------
1 0.5
2 1.5
3 3.0
4 6.5

(4 行受影响)
???
王向飞 2010-11-09
  • 打赏
  • 举报
回复

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:[TB]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]')
AND type in (N'U'))
DROP TABLE [TB]
GO

---->建表
create table [TB]([zid] int,[data] numeric(2,1))
insert [TB]
select 1,0.5 union all
select 2,1.0 union all
select 3,1.5 union all
select 4,3.5
GO



--> 查询结果
SELECT zid,case when zid= 1 then data else data+1 end
FROM [TB]
--> 删除表格
--DROP TABLE [TB]

34,590

社区成员

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

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