【发布时间】:2016-06-20 04:43:56
【问题描述】:
假设我有一张包含此类数据的表格:
Parent Value DateFor ValueType
3177 50.110000 2016-03-05 1
3177 254390.000000 2016-03-05 2
3177 50.110000 2016-03-06 1
3177 254390.000000 2016-03-06 2
3294 40.800000 2016-03-05 1
3294 20280.000000 2016-03-05 2
在 Parent 列的帮助下,我的表在 Id 上具有 PRIMARY 索引(此处未显示 id)和与父表的 FOREIGN 关系。
我想为每个父级按值类型选择最新值:
3177 50.110000 2016-03-06 1
3177 254390.000000 2016-03-06 2
3294 40.800000 2016-03-05 1
3294 20280.000000 2016-03-05 2
说明:我忽略了父 3177 的 2015-03-05 的两个值,因为它有 2016-03-06 的数据。但我从 2016-03-05 获取父级 3294 的数据,因为它是我拥有的最新数据。
实现这一目标的最高效查询是什么?因为我的表有数百万行...
是否可以避免子查询?
【问题讨论】:
-
How to optimize performance for this query?查询在哪里? -
哪个数据库引擎?
-
@lad2025 我有基本的
SELECT和 where 过滤器,我提供一个父级并且没有分组,但我不知道如何构建没有过滤器和分组的查询,占据前 1按日期,所有数据... -
@trincot:SQL Server,对不起
-
它太宽泛了。首先,您的数据将其采样到很小,并且有点不清楚。其次,您没有向我们展示您的表/索引结构。第三:为什么要存储重复项?
标签: sql sql-server sql-server-2008 grouping aggregate-functions