当特定的列组合决定数据的重复性时,如何排除sql中的数据?
据我所知,我有一个数据集是正确的。如下所示 但是,我有一个要求,当某个列组合在一起时,每个记录必须是唯一的 从resultset–我认为这是一个重复的记录,因为QuoteStatus='Block Ready'和Iteration='1'的组合重复了不止一次。(即使QuoteID是不同的) 我不希望出现第1行,也不能简单地从Select语句中删除“QuoteID”,因为我希望它显示出来 我已经尝试将(按QuoteId分区,按QuoteId排序,按QuoteId分区)上的行数()作为行分区。然而,结果不是我想要的。我不能排除ROW_Partition='1',因为这样仍然会留下第2行当特定的列组合决定数据的重复性时,如何排除sql中的数据?,sql,sql-server,Sql,Sql Server,据我所知,我有一个数据集是正确的。如下所示 但是,我有一个要求,当某个列组合在一起时,每个记录必须是唯一的 从resultset–我认为这是一个重复的记录,因为QuoteStatus='Block Ready'和Iteration='1'的组合重复了不止一次。(即使QuoteID是不同的) 我不希望出现第1行,也不能简单地从Select语句中删除“QuoteID”,因为我希望它显示出来 我已经尝试将(按QuoteId分区,按QuoteId排序,按QuoteId分区)上的行数()作为行分区。然而
QuoteStatus Quoteid batchID EffDate Iteration ROW_Partition Months Revenue
1 Block Ready 275576 900265 3/1/2019 1 1 1096 635791
2 Block Ready 275576 900265 3/1/2019 1 2 1096 635791
3 Block Ready 275576 900265 3/1/2019 1 3 1096 635791
4 Block Ready 275576 900265 3/1/2019 1 4 1096 635791
5 Block Ready 275654 900265 3/1/2019 1 1 1096 635791
6 Block Ready 275654 900265 3/1/2019 1 2 1096 635791
7 Block Ready 275654 900265 3/1/2019 1 3 1096 635791
8 Block Ready 275654 900265 3/1/2019 1 4 1096 635791
9 Sold 275654 900265 3/1/2019 2 5 1096 635791
10 Sold 275654 900265 3/1/2019 2 6 1096 635791
11 Sold 275654 900265 3/1/2019 2 7 1096 635791
12 Sold 275654 900265 3/1/2019 2 8 1096 635791
我希望删除第1行,但不明确排除QuoteID='275576',因为这可能会发生在许多其他引号上。我认为您希望根据要区分的列计算行号,请记住,要根据行号进行筛选,您需要将其包装在子查询或CTE()中:
然后,您可以根据该值进行筛选。请将SQL和数据作为格式化文本包含在您的问题中,因为这将帮助我们了解发生了什么。将示例数据和预期结果作为文本(而不是图像)发布并更好地解释你想要应用的条件。嗨@Gordon Linoff,这里有一个愚蠢的问题……我可以用“seqnum”来过滤同一查询中的结果吗?谢谢。@i.am.satishv。你需要一个子查询或CTE。谢谢你的帮助,我现在就结束这篇文章。看起来使用ROW_NUMBER()是一种可行的方法,但是如果不使用QuoteID作为过滤器,我无法排除4条记录,它们的Quote Status='Block Ready'和QuoteID='275576'。
QuoteStatus Quoteid batchID EffDate Iteration ROW_Partition Months Revenue
1 Block Ready 275576 900265 3/1/2019 1 1 1096 635791
2 Block Ready 275576 900265 3/1/2019 1 2 1096 635791
3 Block Ready 275576 900265 3/1/2019 1 3 1096 635791
4 Block Ready 275576 900265 3/1/2019 1 4 1096 635791
5 Block Ready 275654 900265 3/1/2019 1 1 1096 635791
6 Block Ready 275654 900265 3/1/2019 1 2 1096 635791
7 Block Ready 275654 900265 3/1/2019 1 3 1096 635791
8 Block Ready 275654 900265 3/1/2019 1 4 1096 635791
9 Sold 275654 900265 3/1/2019 2 5 1096 635791
10 Sold 275654 900265 3/1/2019 2 6 1096 635791
11 Sold 275654 900265 3/1/2019 2 7 1096 635791
12 Sold 275654 900265 3/1/2019 2 8 1096 635791
ROW_NUMBER() OVER (PARTITION BY QuoteStatus, Iteration ORDER BY QuoteID) as seqnum