次のようなSOQL集計クエリを実行するとします。
select OwnerId, sum(ExpectedRevenue)val from Opportunity GROUP BY ROLLUP(OwnerId)
何らかの理由で、ExpectedRevenue フィールドが入力された Opportunities はありません。
次のようなテーブルが得られます。
val___|所有者ID
|Id1 |Id2 |Id3
4/4 レコード。
(補足: どうすれば見栄えを悪くせずに表形式のデータを入れることができますか?)
「val」列はすべて null であり、最後の OwnerId 列も null であることに注意してください。
SOQL はロールアップでも「合計」行を返すため、4 行あります。
返された AggregateResult[] をループすると、コードは次のような行で爆発します。 AggregateResult[0].get('val'); 「System.NullPointerException: Attempt to de-reference a null object」で
ただし、これらのユーザーの 1 人だけが何らかのデータを持っている場合は、すべてが機能します。したがって、特定の列にデータがある行がない場合、その列はまったく存在せず、それを取得するための呼び出しが失敗すると推測しています。
だから私の質問は、null 参照エラーを回避するために列が存在するかどうかをどのように判断するのですか?