有条件地查找行组,"with Opposite Value,"
Find Groups of Rows Conditionally, "with Opposite Value,"
我正在寻找一种有条件地 SELECT
行的方法,而无需只有复合键 A、B(参见图片)。
此外,我需要 select 行,其中存在列 C
的负值和正值;跳过 0
。行数可以与 A
、B
组任意组合,最小值为 2,其中 C 具有负行或正行。
下面找到的数据已经被查询过。
注意:我能够添加另一列 D
,因为我们不能使用 C
:
的实际值
D = CASE WHEN C < 0 THEN 1 ELSE 2 end
所以逻辑可以是 SELECT *
WHERE SUM(D) >= 3
.
我完全能够使用另一种语言(例如 C#
完成此任务,但我 必须 仅使用 SQL.
我也想避免使用临时表。列 D
不是必需的。
这行得通吗?
Select tblA.*
FROM tblA
INNER JOIN
(select A,B
from tblA
Group By A,B
HAVING
SUM(case when C<0 then 1 else 2 end) >=3
)X
on X.A=tblA.A and X.B=tblA.B
SQLFiddle
http://sqlfiddle.com/#!9/2078f/2
我正在寻找一种有条件地 SELECT
行的方法,而无需只有复合键 A、B(参见图片)。
此外,我需要 select 行,其中存在列 C
的负值和正值;跳过 0
。行数可以与 A
、B
组任意组合,最小值为 2,其中 C 具有负行或正行。
下面找到的数据已经被查询过。
注意:我能够添加另一列 D
,因为我们不能使用 C
:
D = CASE WHEN C < 0 THEN 1 ELSE 2 end
所以逻辑可以是 SELECT *
WHERE SUM(D) >= 3
.
我完全能够使用另一种语言(例如 C#
完成此任务,但我 必须 仅使用 SQL.
我也想避免使用临时表。列 D
不是必需的。
这行得通吗?
Select tblA.*
FROM tblA
INNER JOIN
(select A,B
from tblA
Group By A,B
HAVING
SUM(case when C<0 then 1 else 2 end) >=3
)X
on X.A=tblA.A and X.B=tblA.B
SQLFiddle http://sqlfiddle.com/#!9/2078f/2