我有一个3列的表,如下面的示例。
所有行都有一个唯一的productid,但customerid和productname同时存在重复项。我只想选择每个副本的一条记录到一个包含所有3列的新表中。因此,从下面的行中,我希望将第1行和第3行放入新表中。
productid(guid) customerid productname
4362C96D-B413-EA11-A811-000D3A25C7C2 12345678910 credit
C7EC397D-04BF-E611-80EE-005056A027F8 12345678910 credit
F796026C-B413-EA11-A811-000D3A25C942 24681012141 leasing
7490976F-B413-EA11-A811-000D3A25C7C6 24681012141 leasing
我使用此sql将所有重复行选择到一个新表中:
SELECT p.productid, p2.customerid, p2.productname
INTO tempTable
FROM products AS p
JOIN (SELECT customerid, productname
FROM products
GROUP BY customerid, productname
HAVING COUNT(productname)>1) AS p2
ON p.customerid = p2.customerid AND p.productname= p2.productname
ORDER BY p.customerid, p.productname
这个sql在没有productid的情况下工作,但是如果我添加的productid是唯一的pr行,就找不到重复项。
SELECT customerid, productname
FROM testtable
GROUP BY customerid, productname
HAVING COUNT(productname) > 1
ORDER BY customerid
| 12345678910 | credit |
| 24681012141 | leasing |
如何查询此数据以仅选择每个重复行中的一个?
2条答案
按热度按时间a2mppw5e1#
db<>在这里摆弄
de90aj5v2#
您可以添加
ROW_NUMBER()
将函数窗口化到结果集以区分guid值。