0

おはようございます、これで壁に頭をぶつけて、アドバイスをもらいたいと思っていました。以下のように売上データを表示するために3つのテーブルを結合しています。

Select
  a._CommMonth As Month,
  Sum(a._CommDue) As Commission,
  Sum(a.`Network Paid`) As Company,
  Sum(a.Payable) As Adviser,
  c.Fee As Charge,
  Sum(a.Payable) - (c.Fee) As Total
From
  pms_payments.dbo_payments a 
  Inner Join pms_payments.dbo_nscontacts b 
  On b._Firm_Name = a._Firm_Name 
  Left Join pms_payments.dbo_clawback c 
  On b.ContactID = c.ContactID And a._CommMonth = c.Month
Where
  b.ContactID = 199
Group By
  a._CommMonth

Sum(a.Payable)-(c.Fee)As Totalフィールドは問題が発生している場所であり、c.feeテーブルにレコードが存在しない場合、100-[No record]=100などの何も返されません。レコードの場合が存在する場合、値は100-15=85のように期待どおりに差し引かれます。

それは理にかなっていますか?

ありがとう

4

3 に答える 3

1

IFNULLの使用をご覧ください

IFNULL(expr1、expr2)

expr1がNULLでない場合、IFNULL()はexpr1を返します。それ以外の場合は、expr2を返します。IFNULL()は、使用されるコンテキストに応じて、数値または文字列値を返します。

何かのようなもの

Sum(a.Payable) - IFNULL(c.Fee,0)
于 2012-10-23T09:35:15.840 に答える
1

私があなたの質問を正しく理解していれば、100-no record = 100を取得する代わりに、100-no record=[nothing]を取得しています。

これが正しいと仮定すると、あなたの問題はnullがゼロと同じではない(そして有効な数ではない)という事実から生じていると私は信じています。IFNULL()関数を使用して、ヌル値をゼロに置き換えることができ、減算が機能するはずです。

質問を誤解した場合はお知らせください。

于 2012-10-23T09:36:59.567 に答える
1

こんにちは。両方のおかげで、IFNULL関数はまさに私が必要としていたものでした。申し訳ありませんが、両方の回答を受け入れることができませんでしたが、努力と時間に本当に感謝しています。

Sum(a.Payable) - IFNULL (c.Fee,0) As Total

よろしく

ゲイリー

于 2012-10-23T09:53:25.790 に答える