sum()関数を備えた1つの行がある場合、クエリには結果が表示されません

StackOverflow https://stackoverflow.com/questions/8364817

  •  27-10-2019
  •  | 
  •  

質問

私は自分の部門を監視するためにオフィスアクセスプログラムを作成しようとしています。

TBL_DEPTSという名前の誰かにどれだけ借りているかを含むテーブルがあります。

tbl_paymentsという名前の支払いを含む別のテーブルがあります。

これが私の構文です:

SELECT DISTINCTROW
    tbl_depts.who,
    tbl_depts.dept,
    Sum(tbl_payments.payment) AS [Paid],
    (tbl_depts.dept - [Paid]) AS remaining
FROM tbl_depts INNER JOIN tbl_payments ON tbl_depts.[ID] = tbl_payments.[dept_ID]
GROUP BY tbl_depts.who;

しかし問題がある。部門の支払いが1つしかない場合、空に表示されるクエリ。しかし、このクエリは、その部門の2つの支払いがある場合に完璧に機能します。

私は何をすべきか?

役に立ちましたか?

解決

使用するのはどうですか 左結合, 、使用するとき 内側の結合 それを確認してください dept_id 両方のテーブルに存在します。

SELECT DISTINCTROW
    tbl_depts.who,
    tbl_depts.dept,
    Sum(tbl_payments.payment) AS [Paid],
    (tbl_depts.dept - [Paid]) AS remaining
FROM tbl_depts LEFT JOIN tbl_payments 
     ON tbl_depts.[ID] = tbl_payments.[dept_ID]
GROUP BY tbl_depts.who, tbl_depts.dept, (tbl_depts.dept - [Paid]);

他のヒント

上記のクエリは実行されません - グループ化は間違っています。これは機能します:

SELECT tbl_depts.ID, tbl_depts.who, tbl_depts.dept, Sum(tbl_payments.payment) AS paid, [dept]-[payment] AS remaining
FROM tbl_payments INNER JOIN tbl_depts ON tbl_payments.dept_ID = tbl_depts.ID
GROUP BY tbl_depts.ID, tbl_depts.who, tbl_depts.dept, [dept]-[payment];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top