sql - 如何在 SQL 中根据 LastCreatedDate 选择不同的名称

标签 sql sql-server ssis

我有包含列的示例表:

ID(guid)                                 Name        CreatedDate

B27EB95B-B219-46BD-9E72-A378B3E7FED0    A       2005-11-20 22:49:46.000
33D43825-918D-4DC0-874A-53670563EA03    A       2009-10-03 10:34:00.000
28F26DA6-B144-4C0C-AC2F-4DDD2D74357E    B       2011-03-23 08:08:39.000
1491D95F-BA58-41EE-8982-B713DE9DECD7    C       2006-01-18 14:53:12.000
FD25C05D-0C1A-4314-BCA7-F4F33B0E890D    C       2006-10-05 14:25:58.000
F4256300-CAA6-4E80-8D1B-B89273274088    D       2008-03-12 08:56:32.000

这应该是我在 SSIS 上的 OledbDatasource。

现在的问题是我需要在 sql 中获取具有最后创建日期及其 Id 的不同名称。

这是输出结果:

ID(guid)                                 Name        CreatedDate

33D43825-918D-4DC0-874A-53670563EA03    A       2009-10-03 10:34:00.000
28F26DA6-B144-4C0C-AC2F-4DDD2D74357E    B       2011-03-23 08:08:39.000
047ED9C3-DF92-45D5-B295-EE52184116FB    C           2006-10-05 14:23:40.000
F4256300-CAA6-4E80-8D1B-B89273274088    D       2008-03-12 08:56:32.000

谢谢您的问候

最佳答案

如果您使用的是 SQL Server 2005 或更高版本,则可以使用 ranking和一个CTE :

WITH ranked AS (
  SELECT
    ID, Name, CreatedDate,
    rn = ROW_NUMBER() OVER (PARTITION BY Name ORDER BY CreatedDate DESC)
  FROM atable
)
SELECT
  ID,
  Name,
  CreatedDate
FROM ranked
WHERE rn = 1

关于sql - 如何在 SQL 中根据 LastCreatedDate 选择不同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6756861/

相关文章:

sql-server - 如何在一行中显示所有组合?

sql-server - SSIS 联合全部 vs sql server 联合全部

file - SSIS 脚本任务看不到网络驱动器上的文件

MySQL合并共享相似列的多个表

sql - 连接+时间差

SQL Server : CASE statement in the where clause

VM中的SQL脚本需要很长时间才能执行

mysql - 大表查询非常慢

java - 为什么 ResultSet meteData getColumnName 得到的都是大写列名

sql-server - 为什么我的查询这么慢? (SQL Server 2008 全文搜索怪异)