有条件地查找行组,"with Opposite Value,"

Find Groups of Rows Conditionally, "with Opposite Value,"

我正在寻找一种有条件地 SELECT 行的方法,而无需只有复合键 A、B(参见图片)。

此外,我需要 select 行,其中存在列 C 的负值和正值;跳过 0。行数可以与 AB 组任意组合,最小值为 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