2017-05-30 13 views
-1

私はAccessデータベースを持っています。ボトム値を持つという名前のテーブルのコストがあります:Sum()関数とconditionの使い方は?

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

は今、私はタイプ= 2及びコストの合計はタイプ= 1とsubstract提出提出されたすべての費用の合計を計算するクエリをしたいです第2の値からの第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; 

のType1 |タイプ2 | DIFF

18000 | 145000 | 127000

+0

ありがとう、私はこのクエリをwrithすることができます: '選択合計(コスト= - 2、(コスト) - (コスト)) – saeed

2

まず第一に、私はあなたがそのように対処する必要がごめんなさいここであなたの質問をするときに嫌な敵意。あなたはあなたの質問に完全にうまくやって、あなたのテーブル構造とあなたの望む結果をレイアウトしました。新しいクエリであり、クエリを作成する手助けが必要なことは理解できます。すべての回答がコードを必要とするわけではありません。ここで

は、あなたの答えです:

ステップ1 あなたのテーブルには、あなたがqySumType1という名前の新しいクエリを作成します enter image description here

ステップ2 を提供されたデータを使用して作成されていることを確認します。このように構築すると、type = 1のすべてが合計されます。合計ボタンをクリックしてください。 enter image description here

ステップ3 別のクエリを作成し、この1 qySumType2名前を付けます。このクエリは、type = 2のすべてを合計する必要があります。 enter image description here

ステップ4 今 "ファイナル" と呼ばれる別のクエリを作成します。以前の両方のクエリを追加します。最後の列に式を作成して、2つの数値の差を計算します。ちょうどこのような。 enter image description here

これがあります。差を取得したいときはいつでも、最終クエリを実行してください。 enter image description here

私は何か新しいことを学び始め、コミュニティに依存して何度も始めることができたことを何回も教えてくれません。常にベストを尽くし、あなたの質問に対するまともな答えを待ってください。がんばろう!

+0

ヒントありがとうございました。 – saeed