查找具有唯一列的所有行,仅查看最新的

时间:2016-01-19 11:49:35

标签: sql sql-server tsql

编辑:购买当然也包含一个名为Date的列。我的坏。

我有一个表格Purchases,其中包含CustomerIdPhoneNumberPurchasePriceDate列。

我想将有关客户的信息移至新表Customers。 其中包含CustomerIdPhoneNumber

具有相同CustomerId的行可以在Purchases中多次出现,我只想要每个CustomerId的最新行,因为它将包含最新的PhoneNumber对于那个客户。

我阅读了一些关于DISTINCT的内容,但是我从中了解到用于查找唯一行的内容(对吗?)。

我尝试了一些内部联接的东西,但由于我是初学者,如果我发布它,我觉得它不会有多大贡献:)

1 个答案:

答案 0 :(得分:5)

尝试这样的事情:

;WITH MyCustomerRows As
(
    SELECT ROW_NUMBER() OVER(PARTITION BY CustomerID ORDER BY [Date] DESC) AS CustomerIndex
          ,CustomerID
          ,PhoneNumber
    FROM Purchases
)
INSERT INTO NewCustomerTable(CustomerID,PhoneNumber)
SELECT CustomerID,PhoneNumber
FROM MyCustomerRows 
WHERE CustomerIndex =1 --this will pick just the first row, which is the newest...