SQL新手在这里......
以下是MS Access中名为TEST的表格示例:
save()
在我的查询中,我试图仅按EFF_DATE和BATCH求和,并排除TRANS_AMT总和等于0。
所以我的查询结果应该如下:
EFF_DATE BATCH ENTITY ACCOUNT TRANS_AMT
12/1/2017 TEST A 110 165105 (10.00)
12/1/2017 TEST A 120 278910 10.00
12/1/2017 TEST A 110 165105 (10.00)
12/1/2017 TEST A 120 165135 10.00
12/2/2017 TEST B 120 165135 15.00
12/2/2017 TEST B 110 278910 (10.00)
我尝试过以下查询:
EFF_DATE BATCH ENTITY ACCOUNT TRANS_AMT
12/2/2017 TEST B 120 165135 15.00
12/2/2017 TEST B 110 278910 (10.00)
我收到以下错误:
“您尝试执行的查询不包含指定表达式'ENTITY'作为聚合函数的一部分。”
当我用Google搜索错误时,我找不到任何信息,除了声明其他列应该添加到GROUP BY子句但是如果我添加它们,那么按日期和批处理总和为零的事务将继续出现。关于我能做些什么来获得理想结果的任何想法?
谢谢, 丹
答案 0 :(得分:1)
修改GROUP BY并包含ENTITY和ACCOUNT
GROUP BY TEST.EFF_DATE, TEST.BATCH, ENTITY, ACCOUNT
答案 1 :(得分:0)
当您在分组的select语句中使用某些内容时,它需要位于分组中。
但是,您可以执行此嵌套。
您可以使用所有有效日期/批次组合并且不为零。
然后只选择与他们有关的外部记录。
SELECT * FROM TEST A
WHERE (A.EFF_DATE, A.BATCH) IN
(
SELECT B.EFF_DATE, B.BATCH
FROM TEST B
GROUP BY B.EFF_DATE, B.BATCH
HAVING Sum(B.TRANS_AMT)<>0
)