【发布时间】:2013-08-16 13:50:43
【问题描述】:
假设我有两张桌子(见图)。在一个中我有日期,在另一个中我计算了第一个日期中的一些日期。
我需要加入这些表,因此我对表 Dates 中的每个日期都有最新计数(截至该日期)。 例如,对于 [Dates].[date]=3,我没有 [Counts].[Count],所以我必须计算 [date]=1。
在 SQL 中执行此操作的最佳方法是什么?
希望你能理解我:)
谢谢!!
【问题讨论】:
-
你能提供结构和样本数据吗?也许在sqlfiddle.com
-
这不能同时是mysql和sql server。是哪个?
-
使用 WINDOW 函数 Lead() 加上聚合 SUM() 看起来很简单顺便说一句:日期是保留字(类型名),计数(聚合函数)也是如此 对于 mysql(缺少 WINDOW 函数)您必须使用 MAX() 和/或 NOT EXISTS 来使用自联接。
-
我认为您在显示预期结果时弄错了,由于日期 2 和 3 不存在于计数中,因此结果应该为 0
-
@SashiKant - 这正是问题所在,这不是一个简单的左连接。在 Joachim 的答案中运行小提琴,看看它是否有效。
标签: mysql sql sql-server performance