我有两个问题:
我想将两者结合起来,以便我可以获得标准化/时间零/排名数据的累积输出。
这是零时间查询(1):
SELECT Sum([_Group_Norm_Query].Sales) AS SumOfSales
FROM (SELECT
tblTempGroupNorm.Prop_KEY,
tblTempGroupNorm.ReadingDate,
tblTempGroupNorm.Sales,
(SELECT COUNT(Table1A.ReadingDate) FROM tblTempGroupNorm AS Table1A
WHERE Table1A.ReadingDate<=tblTempGroupNorm.ReadingDate
AND Table1A.Prop_KEY = tblTempGroupNorm.Prop_KEY) AS TimeDay
FROM
tblProperties INNER JOIN tblTempGroupNorm ON tblProperties.WH_IDX = tblTempGroupNorm.Prop_KEY
WHERE (((tblProperties.GROUP)='MY GROUP') AND ((tblProperties.AREA)='MY AREA')) ORDER BY
tblTempGroupNorm.ReadingDate) AS [_Group_Norm_Query]
GROUP BY[_Group_Norm_Query].TimeDay;
这是运行的总查询(2):
SELECT Sum(a2.Sales) AS SumOfSales
FROM tblTempGroupNorm AS a1 INNER JOIN (tblTempGroupNorm AS a2 INNER JOIN tblProperties ON a2.Prop_KEY = tblProperties.WH_IDX) ON a1.Prop_KEY = tblProperties.WH_IDX
WHERE (((a2.ReadingDate)<=[a1].[ReadingDate]) AND (([tblProperties].[GROUP])='MY GROUP') AND (([tblProperties].[AREA])='MY AREA'))
GROUP BY a1.ReadingDate
ORDER BY a1.ReadingDate;
关于两者结合的想法?我在运行总计中避免使用DSUM(),也不能在最终的组合查询中使用它。感谢
编辑:根据反馈,这是我尝试合并它们。我收到一个错误:
查询不包含指定的表达式
'COUNT(a2.ReadingDate) = [_Group_Norm_Query].TimeDay
作为聚合函数的一部分。
如果我删除最后一行(GOUP BY [_Group_Norm_Query].TimeDay;
错误被禁止,但查询永远不会完成 - 它会锁定。
SELECT Sum([_Group_Norm_Query].Sales) AS SumOfSales, Sum(RunTotal.SumOfSales) AS MY_RUNNING_TOTAL
SELECT Sum(a2.Sales) AS SumOfSales
FROM tblTempGroupNorm AS a1 INNER JOIN (tblTempGroupNorm AS a2 INNER JOIN tblProperties ON a2.Prop_KEY = tblProperties.WH_IDX) ON a1.Prop_KEY = tblProperties.WH_IDX
WHERE (((a2.ReadingDate)<=[a1].[ReadingDate]) AND (([tblProperties].[GROUP])='MY GROUP') AND (([tblProperties].[AREA])='MY AREA'))
GROUP BY a1.ReadingDate
HAVING COUNT(a2.ReadingDate) = [_Group_Norm_Query].TimeDay
ORDER BY a1.ReadingDate) AS RunTotal
FROM (SELECT
tblTempGroupNorm.Prop_KEY,
tblTempGroupNorm.ReadingDate,
tblTempGroupNorm.Sales,
(SELECT COUNT(Table1A.ReadingDate) FROM tblTempGroupNorm AS Table1A
WHERE Table1A.ReadingDate<=tblTempGroupNorm.ReadingDate
AND Table1A.Prop_KEY = tblTempGroupNorm.Prop_KEY) AS TimeDay
FROM
tblProperties INNER JOIN tblTempGroupNorm ON tblProperties.WH_IDX = tblTempGroupNorm.Prop_KEY
WHERE (((tblProperties.GROUP)='MY GROUP') AND ((tblProperties.AREA)='MY AREA')) ORDER BY
tblTempGroupNorm.ReadingDate) AS [_Group_Norm_Query]
GROUP BY[_Group_Norm_Query].TimeDay;
答案 0 :(得分:0)
对于HAVING
子句错误,请尝试修复子查询周围的标点符号 - 逗号和括号:
SELECT [_Group_Norm_Query].TimeDay, Sum([_Group_Norm_Query].Sales) AS SumOfSales,
Sum(RunTotal.SumOfSales) AS MY_RUNNING_TOTAL,
(SELECT Sum(a2.Sales) AS SumOfSales
FROM tblTempGroupNorm AS a1
INNER JOIN (tblTempGroupNorm AS a2
INNER JOIN tblProperties ON a2.Prop_KEY = tblProperties.WH_IDX)
ON a1.Prop_KEY = tblProperties.WH_IDX
WHERE (((a2.ReadingDate)<=[a1].[ReadingDate])
AND (([tblProperties].[GROUP])='MY GROUP')
AND (([tblProperties].[AREA])='MY AREA'))
GROUP BY a1.ReadingDate
HAVING COUNT(a2.ReadingDate) = [_Group_Norm_Query].TimeDay
ORDER BY a1.ReadingDate) AS RunTotal
FROM
(SELECT tblTempGroupNorm.Prop_KEY, tblTempGroupNorm.ReadingDate,
tblTempGroupNorm.Sales,
(SELECT COUNT(Table1A.ReadingDate) FROM tblTempGroupNorm AS Table1A
WHERE Table1A.ReadingDate<=tblTempGroupNorm.ReadingDate
AND Table1A.Prop_KEY = tblTempGroupNorm.Prop_KEY) AS TimeDay
FROM tblProperties
INNER JOIN tblTempGroupNorm ON tblProperties.WH_IDX = tblTempGroupNorm.Prop_KEY
WHERE (((tblProperties.GROUP)='MY GROUP') AND ((tblProperties.AREA)='MY AREA'))
ORDER BY tblTempGroupNorm.ReadingDate) AS [_Group_Norm_Query]
GROUP BY[_Group_Norm_Query].TimeDay;