【发布时间】:2010-08-09 14:14:30
【问题描述】:
我有以下 SQL 语句:
SELECT [l.LeagueId] AS LeagueId, [l.LeagueName] AS NAME, [lp.PositionId]
FROM (Leagues l INNER JOIN
Lineups lp ON l.LeagueId = lp.LeagueId)
WHERE (lp.PositionId = 1) OR
(lp.PositionId = 3) OR
(lp.PositionId = 2)
我真正需要的是获取位置计数大于数字的行。比如:
SELECT [l.LeagueId] AS LeagueId, [l.LeagueName] AS NAME, [lp.PositionId]
FROM (Leagues l INNER JOIN
Lineups lp ON l.LeagueId = lp.LeagueId)
WHERE Count(lp.PositionId = 1) > 2 OR
Count(lp.PositionId = 3) > 6 OR
Count(lp.PositionId = 2) > 3
有没有办法在 SQL 中做到这一点?
【问题讨论】:
-
所以,我在下面使用了 Cade Roux 的解决方案,但是有谁知道为什么,当我将 HAVING 从 OR 语句更改为 AND 语句时,我得到零结果?如果我只使用一个 SUM(CASE..) 语句,我会得到结果,但如果我结合两个有效的语句,我会得到零个结果。
标签: sql join count where-clause having