选择IIF SUM命令

时间:2011-10-05 18:13:26

标签: sql vba

我使用来自excel的Jet SQL,使用与IBM400服务器的ADODB连接来尝试获取一些数据。我以前做得很好,所有其他JET SQL命令都没问题但是我遇到了一个我无法解决的问题。这很简单,所以我想我只是没有使用正确的语法,但我想要做的是得到一些总数。

我有一个表格,其中包含该部分位置内的部件号和数量(每个部件多个位置)。我的目标是让sql命令获取每个部分的总数量(求和所有位置)。我能够成功地使用以下一部分来完成这一部分:(为简单起见,我将使用部件号12345678和01234567)

SELECT SUM(CPJDDTA81.F4101JD.LIPQOH) FROM CPJDDTA81.F4101JD WHERE CPJDDTA81.F4101JD.IMLITM = '12345678'

CPJDDTA81.F4101JD是我的表,IMLITM是部件号的列名,LIPQOH是每个位置的库存数量。

单次搜索产生我想要的总和但是当尝试在一个sql命令中运行多个总和时出现问题。我尝试使用如下的select iif命令:

SELECT IIF(CPJDDTA81.F4101JD.IMLITM = '12345678',SUM(CPJDDTA81.F4101JD.LIPQOH),IIF(CPJDDTA81.F4101JD.IMLITM = '01234567',SUM(CPJDDTA81.F4101JD.LIPQOH),0) FROM CPJDDTA81.F4101JD

此命令提供错误,指出“=”不是有效令牌(IIF语句中的=符号)。我希望那里的某个人可以帮我写一个正确的声明来完成这个。我的实际部件列表会更大,所以我将使用VBA来构造SQL语句,但我需要先学习如何做两部分。提前谢谢。

1 个答案:

答案 0 :(得分:0)

SELECT CPJDDTA81.F4101JD.IMLITM, SUM(CPJDDTA81.F4101JD.LIPQOH) AS TotalQuantity
FROM CPJDDTA81.F4101JD
GROUP BY CPJDDTA81.F4101JD.IMLITM

以上是否有帮助?
此外,可以通过添加WHERE子句来限制项目。

SELECT CPJDDTA81.F4101JD.IMLITM, SUM(CPJDDTA81.F4101JD.LIPQOH) AS TotalQuantity
FROM CPJDDTA81.F4101JD
WHERE CPJDDTA81.F4101JD.IMLITM IN ('12345678', '01234567')
GROUP BY CPJDDTA81.F4101JD.IMLITM