×

CRM’de Multiselect OptionSet Alanlarını SQL ile Anlamlı Hale Getirme

Microsoft Dynamics CRM (özellikle on-premise kurulumlarda) veri çekme ve raporlama süreçlerinde SQL sıkça kullanılır. Ancak bazı alan tipleri vardır ki doğrudan okunabilir değildir. Bunlardan biri de Multiselect OptionSet alanlarıdır.

Bu alanlar veritabanında kullanıcı dostu bir formatta tutulmaz. Örneğin:

[-1,3,1]

Bu veri ilk bakışta bir anlam ifade etmez. Aslında bu değerler, seçilen option’ların ID’lerini temsil eder. Kullanıcı arayüzünde gördüğümüz karşılıkları (örneğin “Mağaza”, “Web”) elde edebilmek için bu ID’lerin çözülmesi gerekir.


Multiselect OptionSet alanları:

  • String olarak tutulur
  • İçinde birden fazla değer barındırır
  • Label (görünen isim) yerine ID içerir

Dolayısıyla SQL ile rapor çekerken bu alanları doğrudan kullanmak yeterli değildir.


Dynamics CRM veritabanında OptionSet alanlarının karşılıkları StringMapBase tablosunda tutulur. Bu tabloyu kullanarak ID → Label dönüşümü yapılabilir.

Aşağıdaki sorgu, Multiselect OptionSet alanındaki değerleri çözümler ve virgülle ayrılmış şekilde tek satırda birleştirir:


(select STRING_AGG(Value,',') WITHIN GROUP (ORDER BY Value)

from crm_MSCRM..StringMapBase where ObjectTypeCode=2 and AttributeName='new_kullandigikanallar' and LangId='1055'

and replace(replace(c.new_kullandigikanallar,'[-1,',''),',-1]','') like '%'+cast(AttributeValue as nvarchar(1))+'%') as kanallar

Yorum gönder