我有一张表格如下:
Name Customer Date Amount
Joe Aaron 2012-01-03 14:12:00.0 150
Joe Aaron 2012-02-03 14:12:00.0 150
Joe Danny 2012-03-03 14:12:00.0 150
Joe Karen 2012-07-03 14:12:00.0 150
Ronald Blake 2012-05-03 14:12:00.0 1501
我想通过指定Name
来查询检索数据,如果Customer
列有重复项,则最新Date
的记录为
例如,如果我想查询Joe
,我将得到以下结果:
Name Customer Date Amount
Joe Aaron 2012-02-03 14:12:00.0 150
Joe Danny 2012-03-03 14:12:00.0 150
Joe Karen 2012-07-03 14:12:00.0 150
我该怎么做?试过distinct
,但它不会那样工作。
修改 我使用的是SQL Server。对不起,我重新编辑了我的问题,这应该是我提出的正确问题。
答案 0 :(得分:0)
你试过这个吗?
SELECT Name, Customer, MAX(Date) as CurrentDate, Amount
FROM data
Group By Name, Customer, Amount
HAVING Name = 'Joe'
答案 1 :(得分:0)
一个选项:
SELECT * FROM Table WHERE (NAME, CUSTOMER, DATE) IN (SELECT NAME, CUSTOMER, MAX(DATE) WHERE NAME = 'Joe' GROUP BY NAME, CUSTOMER)
答案 2 :(得分:0)
另一个选择是使用WITH TIES子句与Row_Number()
一起使用示例强>
Select top 1 with ties *
From YourTable
Where Name='Joe'
Order By Row_Number() over (Partition By Customer Order By Date Desc)
<强>返回强>
Name Customer Date Amount
Joe Aaron 2012-02-03 14:12:00.000 150
Joe Danny 2012-03-03 14:12:00.000 150
Joe Karen 2012-07-03 14:12:00.000 150