function readOnly(count){ }
Don't have an account?
Search for an answer or ask a question of the zone or Customer Support.
You need to sign in to do that
Sign in to start searching questions
Signup for a Developer Edition
Sign in to start a discussion
SQL文のdistinct句と同じ機能をSOQL文で書けるでしょうか?
例えば、
select distinct name from account
と同じ結果を、
SOQL文で記述できるでしょうか?
「商品名」「社名」「TEL」「FAX」「住所」「代表者名」というテーブル「納品商品」のレコードが以下のようになっている場合、
商品A 取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん
商品A 取引先Y 03-YYYY-YYYY 03-YYYY-YYYY 東京都YYYY区 Yさん
商品A 取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん ←同じ商 品の購入歴
商品A 取引先Z 03-ZZZZ-ZZZZ 03-ZZZZ-XXXX 東京都XXXX区 Zさん
Select 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」, count(「商品名」)
from 「納品商品」
where 「商品名」 = '商品A'
group by 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」
ってな感じで、実行すると以下の結果が得られます。
取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん 2
取引先Y 03-YYYY-YYYY 03-YYYY-YYYY 東京都YYYY区 Yさん 1
取引先Z 03-ZZZZ-ZZZZ 03-ZZZZ-XXXX 東京都XXXX区 Zさん 1
ちなみに、APEX CODEで取得する場合は、以下のようになります。
for (AggregateResult record : [ select 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」, count(「商品名」) 別名 from 「納品商品」 where 「商品名」 = '商品A' group by 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」 ]) { System.debug(record.get('「社名」')); System.debug(record.get('「TEL」')); System.debug(record.get('「FAX」')); System.debug(record.get('「住所」')); System.debug(record.get('「代表者名」')); System.debug(record.get('「別名」'));}
ver.18.0 より GROUP BY が使用できるようになったので、
DISTINCT と同じ機能として使用できるかと思います。
ドキュメントはこちらを参照してください。
以上
ご返信有難うございます。
group byですと、集計はできても、
重複処理には使えないかと思っていました。
重複処理として使う方法があるでしょうか?
※出したいアウトプットなのですが、
「納入商品が関連する取引先」のようなレポートタイプを使う際に、
「“商品A”を購入したことがある取引先」のリストを出したいと思っています。
通常ですと、”商品A”を複数回購入している取引先Bがあると、
「”取引先B”×”商品A”」が複数レコード出てきてしまい、
それを.csv上で処理する形になりますが、それを回避したいと思っています。
また、分析・集計のための処理ではなく、
販促リストを抽出するための処理になります。
従って、1つのレコード;”取引先B”に対して、
「社名」「TEL」「FAX」「住所」「代表者名」のように、
複数項目を引っ張りたい感じです。
初心者のため、的外れな質問をしておりましたら、
申し訳ありません・・・
なるほど。
理解できました。
ありがとうございます!!
「商品名」「社名」「TEL」「FAX」「住所」「代表者名」というテーブル「納品商品」のレコードが以下のようになっている場合、
商品A 取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん
商品A 取引先Y 03-YYYY-YYYY 03-YYYY-YYYY 東京都YYYY区 Yさん
商品A 取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん ←同じ商 品の購入歴
商品A 取引先Z 03-ZZZZ-ZZZZ 03-ZZZZ-XXXX 東京都XXXX区 Zさん
Select 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」, count(「商品名」)
from 「納品商品」
where 「商品名」 = '商品A'
group by 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」
ってな感じで、実行すると以下の結果が得られます。
取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん 2
取引先Y 03-YYYY-YYYY 03-YYYY-YYYY 東京都YYYY区 Yさん 1
取引先Z 03-ZZZZ-ZZZZ 03-ZZZZ-XXXX 東京都XXXX区 Zさん 1
ちなみに、APEX CODEで取得する場合は、以下のようになります。
All Answers
ver.18.0 より GROUP BY が使用できるようになったので、
DISTINCT と同じ機能として使用できるかと思います。
ドキュメントはこちらを参照してください。
以上
ご返信有難うございます。
group byですと、集計はできても、
重複処理には使えないかと思っていました。
重複処理として使う方法があるでしょうか?
※出したいアウトプットなのですが、
「納入商品が関連する取引先」のようなレポートタイプを使う際に、
「“商品A”を購入したことがある取引先」のリストを出したいと思っています。
通常ですと、”商品A”を複数回購入している取引先Bがあると、
「”取引先B”×”商品A”」が複数レコード出てきてしまい、
それを.csv上で処理する形になりますが、それを回避したいと思っています。
また、分析・集計のための処理ではなく、
販促リストを抽出するための処理になります。
従って、1つのレコード;”取引先B”に対して、
「社名」「TEL」「FAX」「住所」「代表者名」のように、
複数項目を引っ張りたい感じです。
初心者のため、的外れな質問をしておりましたら、
申し訳ありません・・・
「商品名」「社名」「TEL」「FAX」「住所」「代表者名」というテーブル「納品商品」のレコードが以下のようになっている場合、
商品A 取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん
商品A 取引先Y 03-YYYY-YYYY 03-YYYY-YYYY 東京都YYYY区 Yさん
商品A 取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん ←同じ商 品の購入歴
商品A 取引先Z 03-ZZZZ-ZZZZ 03-ZZZZ-XXXX 東京都XXXX区 Zさん
Select 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」, count(「商品名」)
from 「納品商品」
where 「商品名」 = '商品A'
group by 「社名」, 「TEL」, 「FAX」, 「住所」, 「代表者名」
ってな感じで、実行すると以下の結果が得られます。
取引先X 03-XXXX-XXXX 03-XXXX-XXXX 東京都XXXX区 Xさん 2
取引先Y 03-YYYY-YYYY 03-YYYY-YYYY 東京都YYYY区 Yさん 1
取引先Z 03-ZZZZ-ZZZZ 03-ZZZZ-XXXX 東京都XXXX区 Zさん 1
ちなみに、APEX CODEで取得する場合は、以下のようになります。
なるほど。
理解できました。
ありがとうございます!!