在重复的结果集上进行选择

时间:2017-10-12 15:14:20

标签: sql sybase-ase

我已经在网上搜索了几天,阅读了所有这些内容,但我无法完成它。这就是我注册stackoverflow的原因,我希望你能帮助我。提前感谢您的时间和精力!

鉴于下一个表格:

 column1    column2    column3
 ---------- ---------- ----------
 A          X          1
 A          X          3
 A          Y          1
 A          Y          2
 A          Z          1
 A          Z          2
select * from t where column2 = Y

select * from t where column2 = Z

具有相同的结果集; 1,2,

select * from t where column2 = X

具有不同的结果集; 1,3,

如果与column3结合使用,如何在column2中选择具有重复结果集的值?

我想有一个选择查询给我Y和Z,因为它们都有1 + 2作为结果,而不是X,因为X有1 + 3。

1 个答案:

答案 0 :(得分:-1)

您可以使用基于集合的操作执行此操作。有点痛,但是:

select a.col2, b.col2
from t a join
     t b
     on a.col1 = b.col1 and  -- assume this is needed
        a.col3 = b.col3 and
        a.col2 < b.col2
group by a.col2, b.col2
having count(*) = (select count(*) from t where t.col1 = a.col1 and t.col2 = a.col2) and
       count(*) = (select count(*) from t where t.col1 = b.col1 and t.col2 = b.col2) ;

使用窗口函数表达这一点稍微容易一些,但并非所有版本的Sybase都支持这些功能。