OK_008 blog

No incapable except unthinkable. God helps those who help themselves
随笔 - 119, 文章 - 0, 评论 - 93, 引用 - 8
数据加载中……

一条每n行汇总的SQL题目

根据表数据,每3行做一次统计:

CREATE TABLE #T(D int)

INSERT INTO #T
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 12 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 6 UNION ALL
SELECT 7 UNION ALL
SELECT 8 UNION ALL
SELECT 3

SELECT *,IDENTITY(int,1,1) ID INTO #A FROM #T

SELECT A.ID,SUM(B.D) AS 结果 FROM #A A LEFT OUTER JOIN #A B ON B.ID BETWEEN A.ID AND A.ID+2
WHERE A.ID%3=1
GROUP BY A.ID
ORDER BY A.ID

/*
ID    结果
----------------
1    6
4    17
7    17
10    11

*/

DROP TABLE #T ,#A

上次也碰到这样的一个问题,可以查看帖子:http://www.cnblogs.com/wghao/archive/2007/11/09/954192.html

大致的方法是差不多的,只是写法不一样。
不知道还有没有可以不用临时表和IDENTITY()函数来实现的方法?
要是哪位大虾知道,能否拿出来分享?谢谢了。

posted on 2007-12-18 11:54 OK_008 阅读(307) 评论(2)  编辑 收藏 所属分类: SQL 2000/SQL 2005

评论

#1楼    回复  引用  查看    

临时表+游标,呵呵
2007-12-27 14:56 | PerfectDesign      

#2楼 [楼主]   回复  引用  查看    

to PerfectDesign

使用临时表可以,但没有必要使用游标了。
2008-03-01 08:44 | OK_008      

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: