我有以下4个字段的查询。当我运行它时,有很多重复的行。我发现了很多摆脱它们的方法,但是没有一种方法有效。这是查询(输出中有重复项):
SELECT
R.CODNEG,
C.FimMês As DATA,
Format (
(
select sum(R2.Rendimento)
from Rendimentos R2
where
R2.CODNEG = R.CODNEG and
R2.FimMes > dateadd("m", -12, R.FimMes) and
R2.FimMes <= R.FimMes
)
/
(select sum(C2.VOLTOT) / sum(C2.QUATOT)
from CotacoesHistoricasNova C2
where
C2.CODNEG = C.CODNEG and
C2.FimMês > dateadd("m", -12, C.FimMês) and
C2.FimMês <= C.FimMês
),
"Percent") AS DYaa,
Format (
12*R.Rendimento
/
(select sum(C2.VOLTOT) / sum(C2.QUATOT)
from CotacoesHistoricasNova C2
where
C2.CODNEG = C.CODNEG and
C2.FimMês = C.FimMês
),
"Percent") AS DY12m
FROM
CotacoesHistoricasNova AS C,
Rendimentos AS R,
Tickers AS T
WHERE
C.CODNEG = T.TickerGde and
R.CODNEG = T.Ticker and
C.FimMês = R.FimMes
这将返回以下输出(运行约10秒):
(示例)
CODNEG DATA DYaa DY12m
ABCD11 31/jul/2018 5,50% 6,71%
ABCD11 31/jul/2018 5,50% 6,71% <--- duplicate!
... ... ... ...
ABCD11 31/aug/2018 4,41% 7,05%
DISTINCT
时,它会永远运行(10分钟,仍然
正在运行...)DISTINCTROW
时,它的运行时间约为10秒,但输出为
一样GROUP BY
R.CODNEG, C.FimMês, DYaa, DY12m
时,它会返回
此消息:“您的查询不包含指定的表达式
“ Format(12*R.Rendimento/,"Percent")
”作为汇总的一部分
功能。” 输出应该是这样的(无重复):
(示例)
CODNEG DATA DYaa DY12m
ABCD11 31/jul/2018 5,50% 6,71%
ABCD11 31/aug/2018 4,41% 7,05%
ABCD11 30/sep/2018 3,12% 2,50%
... ... ... ...
XYZW11 31/jan/2018 1,25% 1,64%
XYZW11 28/feb/2018 3,005 2,85%
有什么想法DISTINCTROW
不删除重复项以及如何解决此问题?
答案 0 :(得分:0)
关于DISTINCTROW
在您的情况下不起作用的原因,我在Microsoft Access帮助文件中找到了一条线索...
如果查询仅包含一个表,或者如果... DISTINCTROW被忽略 您将从所有表中输出字段。
如果创建分组查询作为帖子中列出的查询的包装,会发生什么情况?换句话说,将现有查询另存为数据库中的命名查询,然后创建一个新的分组查询并将第一个查询用作记录源。比DISTINCT
方法能为您带来更好的性能吗?