我无法弄清楚如何做到这一点。 我只需要为唯一名称选择一行,其中mod_date是最新值
mod_date smtn name smtn2
2013-01-31 LV002002310453 Rax zse
2013-01-29 LV002002310453 Rax zse
2013-01-31 LV002002310463 Rendo xxc
2013-01-01 LV002002310463 Rendo xxc
2013-01-28 LV002002310465 Mag xsa
2013-01-30 LV002002310465 Mag xsa
2013-01-25 LV002002310465 Mag xsa
我的选择结果应如下所示:
mod_date smtn name smtn2
2013-01-31 LV002002310453 Rax zse
2013-01-31 LV002002310463 Rendo xxc
2013-01-30 LV002002310465 Mag xsa
感谢。
答案 0 :(得分:3)
您可以在CTE中使用ROW_NUMBER
(假设> = SQL-SERVER 2005)
WITH x AS (SELECT mod_date,smtn,name,smtn2,
RN = Row_number()
OVER(
partition BY name
ORDER BY mod_date DESC)
FROM dbo.tablename)
SELECT mod_date,smtn,name,smtn2
FROM x
WHERE rn = 1
如果您想要名称的最后一个日期的所有行不唯一,请使用DENSE_RANK
。
答案 1 :(得分:1)
请尝试:
select * From
(
select
Row_number() over (partition by name order by mod_date desc) RNUM,
mod_date,
name
From
YourTable
)x where RNUM=1
答案 2 :(得分:0)
Select distinct smtn from Databasename order by mod_date desc
答案 3 :(得分:0)
使用distinct可能会省略重复数据,但也可能会发生冲突,因为它也可以省略有用的数据。
您可以按结果(按日期)排序,以便您可以根据日期对其进行排序。
按[日期] desc
从(tablename)顺序中选择*