2014-02-24 62 views
0

我需要使用基于我的表中的组编号的基于GROUP BY语句的游标: 当前代码给了我每条记录让我分开说组1,我不想要,我想要将数据分组。SQL Server游标和组按

DECLARE hello CURSOR 
    FOR 

SELECT bygpno, SUM(bycash) 
    FROM sheet1 
    GROUP BY bygpno 
    ORDER BY bygpno 


OPEN hello 
FETCH NEXT FROM hello 

WHILE @@FETCH_STATUS = 0 
BEGIN 

FETCH NEXT FROM hello 

END 
    CLOSE hello 
    DEALLOCATE hello 

当我运行上面的代码时,它在结果中每次检索一行,我不知道为什么。

+0

您可以添加一些示例数据以及什么 - 当您运行查询时 - 与您的期望结果不一致吗? –

+1

如果您只是运行查询并且不使用游标,那么这是否会得到您想要的? ie..e只是运行'SELECT bygpno,SUM(bycash)FROM sheet1 GROUP BY bygpno ORDER BY bygpno' –

回答

0

看起来像你需要一个嵌套的光标,外面一个经过的bygpno每个组的值,然后在循环中您有另一个游标循环,通过个人记录

它会看起来有点变像这样

FETCH NEXT FROM hello INTO @bygpno, @Sum_bycash 

WHILE @@FETCH_STATUS = 0 
BEGIN 

    DECLARE CURSOR helloagain FOR SELECT ...,bycash FROM sheet1 WHERE bygpno = @bygpno 
    OPEN CURSOR helloagain 
    FETCH NEXT FROM helloagain INTO ...,@bycash 
    WHILE @@FETCH_STATUS = 0 
     BEGIN 
     FETCH NEXT FROM helloagain INTO ...,@bycash 
     END 
    CLOSE CURSOR helloagain 
    DEALLOCATE CURSOR helloagain 


    FETCH NEXT FROM hello INTO @bygpno, @Sum_bycash 
END