2017-05-30 71 views
-1

我有一個Access數據庫。有一個名爲費用表底值:如何在條件下使用Sum()函數?

reson   Cost  Type 
 
------------ ------ ------ 
 
    A1    2500  1 
 
    A1    6500  1 
 
    A2    95000  2 
 
    A3    2500  1 
 
    A1    6500  1 
 
    A4    50000  2

現在我想其中type = 2和成本的總和提起其中type = 1。減去該計算提出的所有費用的總和查詢來自第二個值的第一個值。

例如,上述PIC計算最終結果:

Sum of Type 2 = 145000 
 
Sum of Type 1 = 18000 
 
------------------------- 
 
Final Result = 127000

我的SQL代碼

select iif(type = 2, sum(cost), -sum(cost)) As col1 from cost group by type 
+1

你可以證明你到目前爲止所嘗試過的嗎? –

+0

[so]是*不*免費代碼寫作服務。預計你會嘗試**自己編寫代碼**。在[做更多研究]之後(http://meta.stackoverflow.com/questions/261592),如果你有問題,你可以**發佈你已經嘗試過**的清單,說明什麼是不工作的**並提供** [mcve] **。我建議閱讀[問]一個好問題和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要參加[旅遊]。 – Igor

+0

@WEI_DBA我編輯了我的問題 – saeed

回答

2

更改T1到您的表的名稱。

SELECT Sum(T.Type1) AS Type1, Sum(T.Type2) AS Type2, Sum(T.Type2) - Sum(T.Type1) AS DIFF 
FROM 
(
    SELECT Sum(T1.Cost) AS Type1, 0 AS Type2 
    FROM T1 
    WHERE (((T1.Type)=1)) 
    UNION 
    SELECT 0 AS Type1, Sum(T1.Cost) AS Type2 
    FROM T1 
    WHERE (((T1.Type)=2)) 
) AS T; 

類型1 | Type2 | DIFF

18000 | 145000 | 127000

+0

謝謝,我可以這樣查詢:'從成本中選擇Sum(iif(type = 2,(cost), - (cost))) – saeed

2

首先,我很遺憾,你必須處理這樣的在這裏問你的問題時,討厭的敵意。你很好地問了你的問題,列出你的表格結構和你想要的結果。可以理解的是,您對查詢很陌生,需要幫助創建它們。並不是每個答案都需要代碼,並且不是每個人都知道從哪裏開始。

這裏是你的答案:

步驟1 確保您有數據創建的表,你提供 enter image description here

步驟2 創建一個名爲qySumType1新的查詢。像這樣構建它,因此它總結了類型= 1的所有內容。確保點擊總計按鈕。 enter image description here

步驟3 創建另一個查詢,這個名字一個qySumType2。該查詢應該總和類型= 2的所有內容。 enter image description here

步驟4 現在創建一個名爲 「最後」 另一個查詢。將兩個以前的查詢添加到它。現在在最後一列創建一個表達式來計算兩個數字之間的差異。像這樣。 enter image description here

而你有它。現在,只要您希望獲得差異,就可以運行最終查詢。 enter image description here

希望這會有所幫助!我無法告訴你有多少次我開始學習新東西,並依靠社區幫助我開始。總是盡力而爲,等待你的問題得到體面的回答。祝你好運!

+0

提示非常感謝你。 – saeed