【发布时间】:2012-11-05 05:32:36
【问题描述】:
我在 SQL Server 2008 中有一个“观察”表。该表有一个 locationId 列用于一组地理位置,几列用于观察详细信息和一个用于最新更新日期的列。
每周都会为每个位置附加一条新的观察记录。所以一个位置在表中出现了很多次。
我想要实现的是能够获得每个位置最近的观察记录。
任何人都可以提供任何想法吗?
【问题讨论】:
标签: sql sql-server-2008
我在 SQL Server 2008 中有一个“观察”表。该表有一个 locationId 列用于一组地理位置,几列用于观察详细信息和一个用于最新更新日期的列。
每周都会为每个位置附加一条新的观察记录。所以一个位置在表中出现了很多次。
我想要实现的是能够获得每个位置最近的观察记录。
任何人都可以提供任何想法吗?
【问题讨论】:
标签: sql sql-server-2008
select * from observation where date=(select max(date) from observation)
或
select top 1 * from observation order by date desc
【讨论】:
SELECT TOP 1 * FROM .....(注意:1 和 * 之间有空格而不是点)
select a.* from observations a inner join
(select locationid ,max(updateddate) dates from observations
group by locationid) b
on a.locationid=b.locationid
and a.updateddate=b.dates
【讨论】:
运行查询
select * from Observation
group by location
order by viewdate desc
还请提供有关表格的完整详细信息以及您想要获得的内容。
编辑:已删除反引号。
【讨论】:
location 分组时,该列必须是 SELECT 中唯一允许的不聚合的列,所有其他列必须聚合或忽略。 MySQL 允许在 SELECT 中使用非聚合非 GROUP BY 列,您似乎已经被宠坏了。虽然我认为即使在 MySQL 中也无法编译,因为在这种情况下您不能在 ORDER BY 中引用viewdate。
向表中添加数据类型为 [timestamp] 的列 执行以下代码:
select top(10) * from yourtablename order by columanname desc
注意:columanname 应该是你添加的带有时间戳类型的列
【讨论】:
使用 Getdate 函数,如下所示。
select * from TBL_MP_QC_CustomerWiseCOA_Master order by getdate() desc
【讨论】: