1

私は次のSQLを持っています:

Select dmvndn "Vendor Number", IFNULL(sum(dmsls) / sum(dmprc), 0) "Calculation"
From MyFile
Group By dmvndn

ただし、これを実行すると、「計算」フィールドに null レコードが表示されます。

同じ結果を返す COALESCE 関数も試しました。一部のレコードを 0 として取得し、一部のレコードは空白 (または null) です。

両方のフィールドは P 型で、パックされた数値であると言われています。

アイデアや提案はありますか?

編集 1 問題は、これらのフィールドのいずれかが NULL であることではなく、一方または両方のフィールドが 0 であるようです。そして、ゼロで除算すると、空/空白の結果が得られます。

4

2 に答える 2

1

試す

Sum(IFNULL(dmsls,0)) / Sum(IFNULL(dmprc,0))
于 2011-04-13T21:53:31.143 に答える
0

この種のトリックは、MS SQL Server で役立ちます。

Select
  dmvndn "Vendor Number",
  IFNULL(sum(dmsls) / NULLIF(sum(dmprc), 0), 0) "Calculation"
From MyFile
Group By dmvndn

DB2で役に立たないのだろうか。

更新:説明。

基本的に、除数が 0 の場合は NULL に置き換えます。また、オペランドの少なくとも 1 つが NULL の場合、演算の結果も NULL になることをご存知かもしれません。

結果が NULL であることを説明するために、すでに結果に IFNULL がありました。どのオペランドも NULL になる可能性がなかったので、大きな違いはありませんでした。ただし、今では IFNULL を使用することは完全に理にかなっています。

于 2011-04-14T15:01:40.447 に答える