【发布时间】:2011-11-12 04:30:48
【问题描述】:
我正在尝试从给定日期范围(t1.DATE >= '2011-01-01' AND t1.DATE
SELECT
t1.date as DATE, SUM(t1.total), t2.date, sum(t2.total)
FROM T_SALES t1
LEFT OUTER JOIN T_SALES t2
on (t2.date = (t1.date - 1)
AND t2.rc = t1.rc
AND t2.storenum = t1.storenum)
WHERE
t1.RC = 0
AND t1.STORENUM = '1,'
AND t1.DATE >= '2011-01-01'
AND t1.DATE <= '2011-11-11'
GROUP BY t1.date
ORDER BY t1.DATE ASC
我的第二个汇总 t2.total 是我的问题所在 - SUM(t1.total) 代表准确的销售总额)
下面是我的输出
值 27.90,应该是 5.58——看起来我在 sum(t2.total) 上求和了。
按 t1.total 分组也表明:(5.58 * 5 = 27.90)
我已经尝试了所有可以想象的分组,但就是无法做到正确,有什么想法吗?谢谢大家!
【问题讨论】:
-
您想根据日期范围获取历史总数?我不明白你为什么要加入表格来做到这一点?我认为您需要提供有关您要实现的目标的更多详细信息,或者我的直觉是您试图在一个查询中做太多事情。我不明白为什么你想用 t1.Date = t2.Date - 1 将表加入到自身中。什么是 rc 字段?可能您想使用嵌套的选择查询,然后在日期将它们连接在一起。
-
很明显(对我来说)OP 正在尝试比较日常销售额,这是零售业非常常见的指标。
-
我认为 gregory 提出了一个很好的观点。单独加入一个表有点令人困惑,但是如果你想比较日期,你仍然可以通过使用子查询在 where 子句上执行此操作,这样你就再也不需要使用 join 语句了。
-
自连接在 SQL 应用程序中很常见。