我有一个这样的表:

date          val

2016-1-1       8
2016-2-1       10
2016-1-2       30
2016-1-3       30


现在,我有两个来自不同表的日期,我们称它们为fromdatetwo date

如果fromdate是1,2016-1-1并且Todate是2016-1-2,我需要8 + 30 = 38作为最终值

我要检查一下

所有这些值的SUM(val)日期对应于fromdate和twodate之间。

我尝试了这个:

SELECT nr.sku AS ParentSKU
SUM(gasessiondata.sessions) as visitsWhenSKUWasOnline
FROM
Erp.new_ranking nr
LEFT JOIN
Temp.NumberOfDaysOnline ndo
ON
ndo.sku = nr.sku
JOIN
gadb.gasessiondata gasessiondata
ON 1=1
WHERE
ndo.FromDate Is NOT NULL
AND
ndo.ToDate IS NOT NULL
AND
gasessiondata.date >= ndo.FromDate
AND
gasessiondata.date <= ndo.ToDate
GROUP BY nr.sku


但是这当然是不正确的。

最佳答案

无法在连接表达式中传递日期,但是在子查询中,您将获得总和:

SELECT ndo.sku ParentSKU,
  (
    SELECT SUM(gasessiondata.sessions) as s
    FROM gasessiondata
    gasessiondata.date >= ndo.FromDate
    AND
    gasessiondata.date <= ndo.ToDate
  ) as visitsWhenSKUWasOnline
FROM Temp.NumberOfDaysOnline ndo


我不了解您的表结构,并且表没有清晰描述,但是我认为Adobe查询会有所帮助。

10-04 15:38