当特定的列组合决定数据的重复性时,如何排除sql中的数据?

当特定的列组合决定数据的重复性时,如何排除sql中的数据?,sql,sql-server,Sql,Sql Server,据我所知,我有一个数据集是正确的。如下所示 但是,我有一个要求,当某个列组合在一起时,每个记录必须是唯一的 从resultset–我认为这是一个重复的记录,因为QuoteStatus='Block Ready'和Iteration='1'的组合重复了不止一次。(即使QuoteID是不同的) 我不希望出现第1行,也不能简单地从Select语句中删除“QuoteID”,因为我希望它显示出来 我已经尝试将(按QuoteId分区,按QuoteId排序,按QuoteId分区)上的行数()作为行分区。然而

据我所知,我有一个数据集是正确的。如下所示

但是,我有一个要求,当某个列组合在一起时,每个记录必须是唯一的

从resultset–我认为这是一个重复的记录,因为QuoteStatus='Block Ready'和Iteration='1'的组合重复了不止一次。(即使QuoteID是不同的) 我不希望出现第1行,也不能简单地从Select语句中删除“QuoteID”,因为我希望它显示出来

我已经尝试将(按QuoteId分区,按QuoteId排序,按QuoteId分区)上的行数()作为行分区。然而,结果不是我想要的。我不能排除ROW_Partition='1',因为这样仍然会留下第2行

    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