【发布时间】:2021-03-26 01:57:45
【问题描述】:
请参阅下面使用带有 SSMS 的 T-SQL 的查询。共有三个表:B、G 和 L。
B 有一个列 Bname
G 有 2 列 Gname, Gross
L 有 2 列 Bname, Gname
总列是一个介于 80 到 100 之间的 INT 值。
表 L 的列:Bname 和 Gname 将包含来自同一行的 B 和 G 表的名称。如果两个名称都在同一行上,我想将其计为一个项目;仅当表 G 上的 Gross 与相应的 Gname 行之间的范围在 80 到 100 之间时。
我当前的查询内容为:
SELECT l.bname, (SELECT COUNT(*) FROM g WHERE g.gross BETWEEN 80 AND 90) AS Good
FROM l
INNER JOIN b
ON b.bname=l.bname
INNER JOIN g
ON g.gname=l.gname
GROUP BY l.bname;
结果差不多了,但它计算了 Table G:Gname 80 到 100 之间的所有行。发出 Table L 上 Bname 和 Gname 位于同一行的实例。
提前感谢您的关注。
【问题讨论】:
-
为什么要在子查询和
FROM中执行横向连接?如果您使用该子查询,则不需要FROM l之后的任何内容。
标签: sql sql-server group-by count subquery