我以(缩写)形式(包括样本数据集)继承了SQL Server表:
| SID | name | Invite_Date |
|-----|-------|-------------|
| 101 | foo | 2013-01-06 |
| 102 | bar | 2013-04-04 |
| 101 | fubar | 2013-03-06 |
我需要选择所有SID
和Invite_date
,但如果有重复SID
,则只需获取最新条目(按日期)。
所以上面的结果看起来像是:
101 | fubar | 2013-03-06
102 | bar | 2013-04-04
请任何想法。
N.B Invite_date
列已被声明为nvarchar
,因此要使用CONVERT(DATE, Invite_date)
答案 0 :(得分:2)
您可以在ROW_NUMBER
中使用DENSE_RANK
或CTE
WITH CTE AS
(
SELECT SID, name, Invite_Date,
rn = Row_Number() OVER (PARTITION By SID
Order By Invite_Date DESC)
FROM dbo.TableName
)
SELECT SID, name, Invite_Date
FROM CTE
WHERE RN = 1
:
Row_Number
如果您希望每个组只有一行,请Dense_Rank
使用Invite_Date
,如果您希望每个组的所有最后Invite_Date
行重复最多 - {{1}},请{{1}}。
答案 1 :(得分:1)
select t1.*
from your_table t1
inner join
(
select sid, max(CONVERT(DATE, Invite_date)) mdate
from your_table
group by sid
) t2 on t1.sid = t2.sid and CONVERT(DATE, t1.Invite_date) = t2.mdate
答案 2 :(得分:0)
select
SID,name,MAX(Invite_date)
FROM
Table1
GROUP BY
SID