2014-02-24 63 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