多列重复时仅选择一些行

时间:2014-04-09 22:13:00

标签: sql sql-server-2008

当我有3个重复的特定列时,我想只选择一组行。例如,在表格中,我只想显示2个引号中的一个,因为它们是副本。

QuoteNumber|LineNumber|BillToCustomer|PurchaseOrder|CreationDate|Item
...........|..........|..............|.............|............|.........
11         | 1        | John         | 35          | 2014-04-09 | X1234 
11         | 2        | John         | 35          | 2014-04-09 | X5678
12         | 1        | John         | 35          | 2014-04-09 | X1234 
12         | 2        | John         | 35          | 2014-04-09 | X5678-2

所以我有类似的东西:

SELECT * FROM vgQesHeader QH
left join vgQesDetail QD on QH.Link = QD.QuoteLink

这些标准:

QD.LineNumber='1'  
COUNT(QH.BillToCustomer)>1 
COUNT(QH.PurchaseOrder)>1 
COUNT(QH.CreationDate)>1

并不知道如何做到这一点。

我试过了,但它似乎没有用。

编辑: 这是我的预期输出:

QuoteNumber|LineNumber|BillToCustomer|PurchaseOrder|CreationDate|Item
...........|..........|..............|.............|............|.........
11         | 1        | John         | 35          | 2014-04-09 | X1234 
11         | 2        | John         | 35          | 2014-04-09 | X5678

1 个答案:

答案 0 :(得分:0)

试试这个:

;with cte as
(select *, row_number() over (partition by linenumber order by quotenumber) rn from tbl)
select quotenumber, linenumber, billtocustomer, purchaseorder, creationdate, item 
from cte
where rn = 1