Dynamics CRMグローバルオプションセット一覧がほしい時に実行するSQL
Dynamics CRMのカスタムグローバルオプションセットの一覧がほしい時に実行するSQLです。
SELECT PicklistValue.Label, PicklistValue.Name, --PicklistValue.OptionSetId, LLLV2.Label, PicklistValue.Value FROM LocalizedLabelLogicalView AS LLLV2 INNER JOIN ( -- カスタムグローバルオプションセットのPickListIDを表示 SELECT OSIdLabel.OptionSetId, OSIdLabel.Label, OSIdLabel.Name, APVLV.Value, APVLV.AttributePicklistValueId FROM AttributePicklistValueLogicalView AS APVLV INNER JOIN ( -- カスタムグローバルオプションセットの表示名と名前を表示 SELECT OSLV.OptionSetId, LLLV.Label, OSLV.Name FROM OptionSetLogicalView AS OSLV INNER JOIN LocalizedLabelLogicalView AS LLLV ON OSLV.OptionSetId = LLLV.ObjectId WHERE LLLV.ObjectColumnName = 'DisplayName' AND OSLV.IsGlobal = 1 AND OSLV.IsCustomOptionSet = 1 ) AS OSIdLabel ON OSIdLabel.OptionSetId = APVLV.OptionSetId ) AS PicklistValue ON LLLV2.ObjectId = PicklistValue.AttributePicklistValueId WHERE LLLV2.ObjectColumnName = 'DisplayName'
LocalizedLabelLogicalViewやMetadataSchema.LocalizedLabelには、
オプションセットのプルダウン内の各ラベルや値はもちろんですが、オプションセット自体の表示名と名前もデータが入っているんですね。
LabelTypeCode列の値が1の場合、プルダウン内の各ラベルの表示で、
LabelTypeCode列の値が10の場合、オプションセット自体の表示名を表します。
参考サイト
How to query CRM Global OptionSet Values in SQL? | Arun Potti's MS CRM blog