我已经在网上搜索了几天,阅读了所有这些内容,但我无法完成它。这就是我注册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。
答案 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都支持这些功能。