sql - 我如何使用光标编写带有连接的选择
问题描述
我有以下代码:
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
解决方案
您需要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
推荐阅读
- html - Css 边框顶部和 bot 线性渐变
- c# - ImageView.SetFrame(int, int, int, int)' 由于其保护级别而无法访问
- google-analytics - 非电子商务网站的 GA4 总收入
- javascript - 将变量值从一个 React 函数传递给另一个(在两个不同的文件之间)
- python - 如何在窗口PyQt5之外传递文本框的值
- amazon-s3 - 如何将 Slack App 安装商店从本地机器移动到 Amazon S3
- javascript - index.cjs.js:409 未捕获(承诺中) FirebaseError:缺少权限或权限不足
- python - 绘制带有条形的直方图,每个条具有恒定的通过(例如,每 0.5 米)
- list - 如何从 Racket 中的字符串列表中打印随机元素?
- vue.js - 在 Vue 构建期间保留上传文件夹