マルチ通貨組織の通貨項目のクエリ
通貨項目をユーザの通貨に変換するには、SOQL クエリの SELECT ステートメントで convertCurrency() を使用します。このアクションを使用するには、組織でマルチ通貨が有効化されている必要があります。
SELECT 句で convertCurrency() を使用するには、次の構文を使用します。
1convertCurrency(field)以下に例を示します。
1SELECT Id, convertCurrency(AnnualRevenue)
2FROM Account組織で高度な通貨管理を有効にしている場合は、商談、商談品目、商談履歴の通貨項目を変換するときに期間指定換算レートが使用されます。
convertCurrency() 関数は WHERE 句では使用できません。使用すると、エラーが返されます。組織の有効な通貨からユーザの通貨に数値を換算するには、次の構文を使用します。
1WHERE Object_name Operator ISO_CODEvalueこの例では、レコードの通貨の Amount 値が USD 5000 相当より大きい場合、商談レコードが返されます。たとえば、金額が USD5001 の商談は返されますが JPY7000 の商談は返されません。
組織で有効になっている、アクティブな ISO コードを使用してください。ISO コードを入力しないと、比較金額の代わりに数値が使用されます。上記の例を使用すると、JPY5001、EUR5001、USD5001 の商談レコードが返されます。WHERE 句で IN を使用する場合は、ISO コード値と ISO 以外のコード値を混在させて使用できません。
クエリに GROUP BY または HAVING 句が含まれる場合、SUM() や MAX() などの集計関数を使用して返される通貨データは、組織のデフォルトの通貨で表示されます。convertCurrency() 関数をコールして集計関数の結果をユーザの通貨に換算することはできません。
次に例を示します。
1swfobject.registerObject("clippy.codeblock-4", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17SELECT Name, MAX(Amount)
18FROM Opportunity
19GROUP BY Name
20HAVING MAX(Amount) > 10000集計関数を使用するときには、USD などの特定の通貨で値を表すために ISO_CODEvalue を使用することはできません。たとえば、次のクエリは機能しません。
1swfobject.registerObject("clippy.codeblock-5", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17SELECT Name, MAX(Amount)
18FROM Opportunity
19GROUP BY Name
20HAVING MAX(Amount) > USD10000