Sql server 查询以从表中选择非重复值
我的表格结构如下:Sql server 查询以从表中选择非重复值,sql-server,unique,distinct,distinct-values,Sql Server,Unique,Distinct,Distinct Values,我的表格结构如下: ID Name RunDate 10001 Item 1 12/09/2013 02:11:47 10002 Item 2 12/09/2013 01:13:25 10001 Item 1 12/09/2013 01:11:37 10007 Item 7 12/08/2013 11:02:04 10001 Item 1
ID Name RunDate
10001 Item 1 12/09/2013 02:11:47
10002 Item 2 12/09/2013 01:13:25
10001 Item 1 12/09/2013 01:11:37
10007 Item 7 12/08/2013 11:02:04
10001 Item 1 12/08/2013 10:25:00
我的问题是,此表将被发送到通讯组电子邮件,这使得电子邮件如此之大,因为该表有数百行。我想要实现的是只显示具有不同ID的记录,这些记录只显示最近的运行日期
ID Name RunDate
10001 Item 1 12/09/2013 02:11:47
10002 Item 2 12/09/2013 01:13:25
10007 Item 7 12/08/2013 11:02:04
你知道我该怎么做吗?我对聚合的东西不是很在行,我使用了DISTINCT,但它总是把我的查询搞得一团糟
谢谢 按应该不同的值分组,并使用
max()
获取最新日期
select id, name, max(rundate) as rundate
from your_table
group by id, name
按应该不同的值分组,并使用
max()
获取最新日期
select id, name, max(rundate) as rundate
from your_table
group by id, name
这更灵活,因为它不需要按所有列进行分组:
;WITH x AS
(
SELECT ID, Name, RunDate, /* other columns, */
rn = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RunDate DESC)
FROM dbo.TableName
)
SELECT ID, Name, RunDate /* , other columns */
FROM x
WHERE rn = 1
ORDER BY ID;
(由于
名称
实际上不需要分组,事实上也不应该在本表中,而分组依据
解决方案的下一个后续问题几乎总是“如果它们有不同的值并且不能被添加到分组依据
中,我如何将
和
添加到输出中?”这更灵活,因为它不需要按所有列进行分组:
;WITH x AS
(
SELECT ID, Name, RunDate, /* other columns, */
rn = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RunDate DESC)
FROM dbo.TableName
)
SELECT ID, Name, RunDate /* , other columns */
FROM x
WHERE rn = 1
ORDER BY ID;
(由于
名称
实际上不需要分组,事实上也不应该在本表中,而分组依据
解决方案的下一个后续问题几乎总是“如果它们有不同的值并且不能被添加到分组依据
中,我如何将
和
添加到输出中?”谢谢您!这很有帮助!不过,还有一个问题。。。如果我还想输出每个组/分区下包含的总行数,该怎么办?有什么方法可以做到这一点吗?当然,在内部添加,c=COUNT(*)覆盖(按ID划分)
,在外部添加,c
。谢谢!这很有帮助!不过,还有一个问题。。。如果我还想输出每个组/分区下包含的总行数,该怎么办?有什么方法可以做到这一点吗?当然,在内部添加,c=COUNT(*)(按ID划分)
和外部添加,c
。