2011-10-05 87 views
0

我從excel中使用Jet SQL,使用ADODB連接到IBM400服務器來嘗試並獲取一些數據。我以前做得很好,並且所有其他JET SQL命令都可以,但是我遇到了一個我無法解決的問題。這很簡單,所以我想象我只是沒有把正確的語法,但我想要做的是得到一些總數。選擇IIF SUM命令

我有一個表格,其中包含該零件位置(每個零件不止一個位置)中的零件號和數量。我的目標是讓sql命令獲取每個部分的總數量(總計所有位置)。我能夠做到這一點的一部分,在一個時間successfuly使用:(爲簡單起見,我將使用零件號12345678和)

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

CPJDDTA81.F4101JD是我的表,IMLITM是零件號的列名,LIPQOH是每個位置的手頭數量。

單個搜索產生我想要的總和,但是當嘗試在一個sql命令中運行多個總和時出現問題。我一直在使用一個選擇IIF如下命令嘗試:

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

此命令提供了一個錯誤,指出「=」不是一個有效的令牌(在=在IIF語句內簽署)。我希望有人能幫助我寫出一個正確的聲明來實現這一點。我的實際部件列表會更大,所以我將使用VBA構造SQL語句,但我需要先學習如何完成兩部分。提前致謝。

回答

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', '') 
GROUP BY CPJDDTA81.F4101JD.IMLITM 
+0

第二個正是我所期待的。謝謝! –