Ms access 从组查询更新而不创建物理表
我有一个名为ECD的表,如下所示:Ms access 从组查询更新而不创建物理表,ms-access,select,group-by,temp-tables,Ms Access,Select,Group By,Temp Tables,我有一个名为ECD的表,如下所示: Cle2 Mont Lettrage acbd.... +8,36 Suspens abcd... -8,36 Suspens dced.. +12,89 Suspens dced.. -12,89 Suspens 其中
Cle2 Mont Lettrage
acbd.... +8,36 Suspens
abcd... -8,36 Suspens
dced.. +12,89 Suspens
dced.. -12,89 Suspens
其中Cle2
是标识表中属于同一组的记录的字段Mont
是存储每条记录的金额的字段Lettrage
是存储标签的字段,该标签将根据我的查询结果进行更改
我要做的基本上是将表ECD按Cle2分组,同时将Mont的值求和(sum(Mont)
),然后检查Mont中的值是否按Cle2
进行求和和和分组。如果它们等于零,我将更新Lettrage
将这些记录标记为OK,否则将这些记录标记为SUSPENT
我已经在access中完成了这项工作,但代码效率不高。我主要做的是:
1、创建一个名为临时的新表
2、在此表中插入select查询的值
代码:
INSERT INTO Provisor
SELECT Cle2 As Cle2p, Sum(MONTANT_ORACLE) AS Sum
FROM ECD
GROUP BY Cle2
3、创建一个表ECD2,为空,具有与ECD相同的字段4、在该表中插入join语句的结果,如下所示:
代码: 5,然后清洁数据库并用正确的标签更新
Lettrage
所以我想做的是做一些类似的事情,而不是创建所有那些愚蠢的物理表
我想强调我是通过使用CurrentDb.execute语句在Visual Basic中执行查询的
提前感谢您的回答 那么:
UPDATE ECD
SET ECD.lettrage = IIf(DSum("Mont","ECD","cle2='" & [cle2] & "'")=0,"Ok","Suspens");
UPDATE ECD
SET ECD.lettrage = IIf(DSum("Mont","ECD","cle2='" & [cle2] & "'")=0,"Ok","Suspens");