SQL-如果存在对,则避免选择

SQL-如果存在对,则避免选择,sql,sql-server,Sql,Sql Server,是否可以为这种情况编写MS SQL查询?如果有带1和-1的pair,我根本不想选择那些条目 可乐 可乐 笔记 A. 1. 我不想选择这个条目,因为它与-1成对 A. -1 我不想选择此条目,因为它与1成对 A. 1. 确定为此A选择-no pair no-1 B 1. 确定选择-无对 C 1. 确定选择-无对 D 1. 我不想选择这个条目,因为它与D-1成对 D -1 我不想选择此条目,因为它与D 1成对 一种方法是聚合。假设只有-1和1,并且没有具有相同符号的重复项: select col1,

是否可以为这种情况编写MS SQL查询?如果有带1和-1的pair,我根本不想选择那些条目

可乐 可乐 笔记 A. 1. 我不想选择这个条目,因为它与-1成对 A. -1 我不想选择此条目,因为它与1成对 A. 1. 确定为此A选择-no pair no-1 B 1. 确定选择-无对 C 1. 确定选择-无对 D 1. 我不想选择这个条目,因为它与D-1成对 D -1 我不想选择此条目,因为它与D 1成对
一种方法是聚合。假设只有-1和1,并且没有具有相同符号的重复项:

select col1, max(col2), col3
from t
group by col1, col3
having count(*) = 1;
或者,您可以使用`notexists:

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.col3 = c.col3 and t2.col1 = t.col1 and
                        t2.col2 = - t.col1
                 );

如果对于Col1的任何值,1和-1之和不是0,则表示它具有未配对的值。 试试这个:

select *
 from t
where col1 in 
(select col1 from t group by col1 having sum(col2) <> 0);

我知道有1s和-1s,这是col2唯一可能的值。如果是这种情况,且最多有一行差异,则可以将值相加:

select col1, sum(col2)
from mytable
group by col1
having sum(col2) <> 0;

除了col1和col2之外,表中还有其他列要选择吗?col2中只有1和-1的值吗?除了一行之外,还能有更多不同的行吗?例如,四乘1和两乘-1表示一列1?您尝试过什么?你在哪里卡住了?让我们看看你的尝试。对于我们来说,理解一个包含一些示例数据的表格,以及一个包含预期结果和简明逻辑摘要的文本表格,要比理解所有内容都简单得多。很抱歉,我的问题中没有足够的细节,我将在下一次尝试改进。然而,托尔斯滕能够给出正确的答案。非常感谢大家。你好,托尔斯滕,是的,这正是我的意思。抱歉,问题的细节不够详细。第二个答案是我一直在寻找的。非常感谢你的帮助。
select col1, max(col2)
from
(
  select
    col1,
    col2,
    row_number() over (partition by col1, col2 order by col2) as rn
  from mytable
) numbered
group by col1, rn
having count(*) = 1;