取到“和”小于500的明细2

chuifeng2012 2013-04-18 10:36:55
原问题:http://bbs.csdn.net/topics/390414119 不过版主给的语句有点小bug可能是我表述的不清楚。
请各位帮忙解决一下。
create table #t
(
isid int primary key identity(1,1),
amount decimal(18,2)
)
go

insert into #t values(23.43)
insert into #t values(213.43)
insert into #t values(523.3)
insert into #t values(23.4)
insert into #t values(263.23)

drop table #t

请问 大家如何才能按照isid顺序由小到大 取到“和”小于 500的明细。此表结果就是取到前两条
就是按照顺序来取到连续数据和小于500的明细


上一个问题版主给的语句里当 表里的数据是
insert into #t values(523.43)
insert into #t values(-113.43)
之类的时候只能获取到 第二条 而没有第一条
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifeng2012 2013-04-19
  • 打赏
  • 举报
回复
@OrchidCat 这个语句似乎也存在bug DECLARE @t table ( isid int primary key identity(1,1), amount decimal(18,2) ) insert into @t(amount) values(523.43) insert into @t(amount) values(-43.43) insert into @t(amount) values(523.3) insert into @t(amount) values(23.4) insert into @t(amount) values(263.23) ;WITH TT AS( SELECT a.isid,a.amount,SUM(b.amount) AS smount FROM @t A INNER JOIN @t B ON A.isid >=b.isid --注意这里的写法 GROUP BY a.isid,a.amount) SELECT isid,amount FROM TT WHERE smount<500 /* isid amount 2 -43.43*/ 结果里 并没有 第一条数据
chuifeng2012 2013-04-19
  • 打赏
  • 举报
回复
@OrchidCat 谢谢啊 初步测试没有问题。 和我昨晚上在stackoverflow 得到的结果差不太多啊。 我揣摩一下去。 另外可否推荐一本sql方面的书?
Mr_Nice 2013-04-19
  • 打赏
  • 举报
回复
DECLARE @t  table 
(
  isid int primary key identity(1,1),
  amount decimal(18,2)
)

insert into @t(amount) values(23.43)
insert into @t(amount) values(213.43)
insert into @t(amount) values(523.3)
insert into @t(amount) values(23.4)
insert into @t(amount) values(263.23)



;WITH TT
AS(
SELECT a.isid,a.amount,SUM(b.amount) AS smount
FROM @t A
INNER JOIN @t B ON A.isid >=b.isid   --注意这里的写法
GROUP BY a.isid,a.amount)

SELECT isid,amount FROM TT WHERE smount<500

/*
isid	amount
1	23.43
2	213.43*/
chuifeng2012 2013-04-18
  • 打赏
  • 举报
回复
需要在sql里加循环吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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