1
我有一个表是这样的:获取每周最多日期的记录表中的
date | data
-----------------
1/1/2017 | a
-----------------
1/2/2017 | b
-----------------
1/3/2017 | c
-----------------
1/7/2017 | d
-----------------
...
-----------------
2/2/2017 | a
-----------------
2/2/2017 | b
-----------------
我需要获得最大的日期数据为表每周可。日期可以多次提交,某些日期可能会丢失,并且几周可能不会在七天内添加。
第一,可能是想到的最简单的方法是这样的:
select maxdate, data from (
select max(date) as maxdate from mytable group by DATEPART(wk, date)
) t1, maytable
where mytable.date = t1.date
但有人告诉我,有没有使用max函数更好的解决方案。这甚至可能吗?上面有没有更好的方法?
这是一个假设性问题,上述查询可能不是100%正确的,因为我没有测试过它。
感谢的人,为什么没有这个,我想起?顺便说一句,比使用聚合函数更好的性能吗? – Lamar
@Lamar我真的不知道它是否会表现更好,您将不得不测试每个数据。虽然我相信这将执行单个索引扫描,而不是您的其他查询的两个索引扫描(或索引扫描+索引查找)(因为您在[日期]上使用函数,所以您将无法使用索引查找在[日期] max()查询)...但我真的不能确定没有看到两者的执行计划。 – SqlZim
反正谢谢你。 – Lamar