Sql 需要从现有的SELECT查询输出中标识多条记录,并删除所有重复记录,K列中值0的记录除外

Sql 需要从现有的SELECT查询输出中标识多条记录,并删除所有重复记录,K列中值0的记录除外,sql,sql-server,Sql,Sql Server,有一个SELECT语句,该语句的输出可能有重复项,在这些重复项中,k列中只有一行可以有值,另一行的值为0。需要删除具有0个值的重复项,但具有值的重复项除外如果要筛选出0个值,则可以使用: select t.* from t where value = 0; select t.* from (select t.*, row_number() over (partition by k order by value desc) as seqnum from t

有一个SELECT语句,该语句的输出可能有重复项,在这些重复项中,k列中只有一行可以有值,另一行的值为0。需要删除具有0个值的重复项,但具有值的重复项除外如果要筛选出0个值,则可以使用:

select t.*
from t
where value = 0;
select t.*
from (select t.*,
             row_number() over (partition by k order by value desc) as seqnum
      from t
     ) t
where seqnum = 1;
如果希望每k仅保留一行,且首选非零值,则可以使用:

select t.*
from t
where value = 0;
select t.*
from (select t.*,
             row_number() over (partition by k order by value desc) as seqnum
      from t
     ) t
where seqnum = 1;

注意:这假设值从不为负。如果可以,则使用ABSUDE值顺序。< /P> < P>我们可以有RoRo数,考虑Calnk值为0,秩=1,并过滤掉它们。假设k列中没有负数

选择ColumnA、ColumnB、ColumnC。。。。。 从…起 选择*,行数按列超额分配按列顺序按列asc作为rnk 从表名 as t 其中rnk>1-0将具有秩=1
请提供样本数据和预期结果。你的解释很难理解。例如,不清楚每k需要多少行。不清楚是否以及何时需要值为0的行。您的问题是什么?你试过什么?为什么不起作用?样本数据和预期结果将有助于我们帮助您。也许其中一个可以回答您模糊的要求:,,或者说实话,回答这样一个低质量、不明确的问题只会促使此类问题不再被问。然后,事实上,你甚至说这个问题在你的方法中是不清楚的,你应该投票结束,而不是回答。给出一个答案告诉OP发布这样糟糕的问题是可以的。谢谢你,戈登。这解决了我的要求。这个答案很有用,谢谢Venkataraman@Marli谢谢很高兴这有帮助。