如何使用游标编写带有联接的选择

时间:2019-06-23 10:31:07

标签: sql sql-server tsql

我有以下代码:

SELECT 
    Przedmiot, COUNT(Ocena) 'wystawiono n ocen'
FROM
    Przedmiot
JOIN
    ocena ON przedmiot.IdPrzedmiot = Ocena.IdPrzedmiot
GROUP BY
    Przedmiot

如何使用T-SQL游标运行它?

这是我到目前为止的内容,但它多次在同一行中显示:(

DECLARE db_cursor CURSOR FOR 
        SELECT Przedmiot, COUNT(Ocena) 'wystawiono n ocen'
        from Przedmiot
        join ocena 
        on przedmiot.IdPrzedmiot = Ocena.IdPrzedmiot
        group by Przedmiot
DECLARE @Przedmiot varchar(50)
DECLARE @IloscOnen varchar(50)
OPEN db_cursor  
    FETCH NEXT FROM db_cursor into @Przedmiot, @IloscOnen
    WHILE @@FETCH_STATUS = 0
       BEGIN 
       print  @Przedmiot + ' - wystawiono ' + @IloscOnen + ' ocen'
          FETCH NEXT FROM db_cursor
       END 
CLOSE db_cursor  
DEALLOCATE db_cursor 
go

1 个答案:

答案 0 :(得分:0)

您需要将值FETCH放入变量:

DECLARE db_cursor CURSOR FOR 
        SELECT Przedmiot, COUNT(Ocena) 'wystawiono n ocen'
        from Przedmiot
        join ocena 
        on przedmiot.IdPrzedmiot = Ocena.IdPrzedmiot
        group by Przedmiot
DECLARE @Przedmiot varchar(50)
DECLARE @IloscOnen varchar(50)
OPEN db_cursor  
    FETCH NEXT FROM db_cursor into @Przedmiot, @IloscOnen
    WHILE @@FETCH_STATUS = 0
       BEGIN 
       print  @Przedmiot + ' - wystawiono ' + @IloscOnen + ' ocen'
          FETCH NEXT FROM db_cursor into @Przedmiot, @IloscOnen
       END 
CLOSE db_cursor  
DEALLOCATE db_cursor 
go