| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:开窗函数中OVER后有哪 些条件可写?
只看楼主 加入收藏
wmcwww
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:21
注 册:2012-11-2
结帖率:53.85%
收藏
已结贴  问题点数:10 回复次数:4 
开窗函数中OVER后有哪 些条件可写?
我想在查询客户账目时,除了查询贷方,借方外,还想分客户计算余额,可是在开窗函数后的OVER中不知道要用什么条件,请高手指教,多谢!!!
搜索更多相关主题的帖子: 查询 客户 
2012-11-19 15:12
wmcwww
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:21
注 册:2012-11-2
收藏
得分:0 
补充一下,用的查询是:
SELECT dbo.zm.khid,dbo.zm.df,dbo.zm.jf,
SUM(isnull(jf,0)-isnull(df,0)) OVER(PARTITION BY khid)
FROM dbo.zm
可是查询出的结果不是按每行累计的余额,而是每个客户的总余额。
2012-11-19 15:20
wmcwww
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:21
注 册:2012-11-2
收藏
得分:0 
这是我的查询结果:
khid  df       jf     jf-df
3    0.00    464.00    0.00
3    464.00    NULL    0.00
4    0.00    274.00    0.00
4    274.00    NULL    0.00
5    0.00    410.00    62.00
5    0.00    814.00    62.00
5    814.00    0.00    62.00
5    0.00    1092.00    62.00
5    762.00    0.00    62.00
5    326.00    0.00    62.00
5    77.00    0.00    62.00
5    275.00    0.00    62.00
6    0.00    232.00    0.00
6    232.00    NULL    0.00
2012-11-19 15:27
半杯清茶
Rank: 4
等 级:业余侠客
威 望:6
帖 子:39
专家分:297
注 册:2012-11-13
收藏
得分:10 
每一行应该是如下的吧?试试?我觉得没必要用开窗函数。PARTITION BY khid 这一句就决定了你的结果是按客户来划分的。
 
SELECT dbo.zm.khid,dbo.zm.df,dbo.zm.jf,
isnull(jf,0)-isnull(df,0) as jf -df
FROM dbo.zm
2012-11-21 12:09
wmcwww
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:21
注 册:2012-11-2
收藏
得分:0 
谢谢!你所说的只能计算每行的合计,而不是“累计合计”,这个问题我用以下方法解决了,也没有用到开窗函数(不一定是最好的,请多指教):
select t2.khid,t2.df,t2.jf,
(select SUM(isnull(jf,0)-isnull(df,0)) from zm t1 where t2.khid=t1.khid and t1.zmid<=t2.zmid
)  as jf-df from dbo.zm t2 order by t2.khid,t2.zmid
因为在有点数据库中可以在OVER()中写入“从首行至本行”这样的条件,我想在SQL2008中也找到这样的写法,这样查询语句就简单多了。可是没找到,只能用以上方法先解决查询了
2012-11-21 19:29
快速回复:开窗函数中OVER后有哪 些条件可写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021505 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved