Показать сообщение отдельно
Старый 02.08.2019, 20:04   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Financial dimension values concatened by mask
коллеги, помогите решить задачу группировки значений финансовых измерений в одном поле по заданной маске.

грубо говоря, есть некий набор атрибутов (recid in DimensionHierarchy), в которой существуют несколько выбранных атрибутов (DimensionHierarchyLevelView)

а теперь я хочу сгруппировать наборы значений этих самых выбранных атрибутов из DimensionAttributeValueSetItemView так, чтобы если для атрибута из иерархии нет значения, то в итоговой строке он был бы представлен, например, пустой строкой или n/a.

вот, что я имею в виду на картинке
Нажмите на изображение для увеличения
Название: sql_concat.png
Просмотров: 153
Размер:	171.3 Кб
ID:	12361

вот мой запрос, который планирую запихать в computed column на своей вьюхе (работает норм)

X++:
select
	t1.DIMENSIONATTRIBUTEVALUESET
,STUFF((SELECT '-' + t16.NAME 
		FROM DIMENSIONATTRIBUTE t16
            JOIN DIMENSIONHIERARCHYLEVELVIEW as t17
                    on t17.DIMENSIONATTRIBUTE = t16.RECID 
					where
					t17.HIERARCHYrecid = 68719485163
           ORDER BY t16.RECID
           FOR XML PATH('')), 1, 1, '')  as ConcatDimNames
	,STUFF((SELECT '-' + t6.NAME +
			STUFF((SELECT '-' + t3.DisplayValue
                    from DimensionAttributeValueSetItemView as t3
                    where
                    t1.DimensionAttributeValueSet = t3.DimensionAttributeValueSet
					and t7.DIMENSIONATTRIBUTE = t3.DIMENSIONATTRIBUTE
                    order by t3.DIMENSIONATTRIBUTE
                    for xml path('')), 1, 1, '') 
					
		FROM DIMENSIONATTRIBUTE t6
            JOIN DIMENSIONHIERARCHYLEVELVIEW as t7
                    on t7.DIMENSIONATTRIBUTE = t6.RECID 
					where
					t7.HIERARCHYrecid = 68719485163
           ORDER BY t6.RECID
           FOR XML PATH('')), 1, 1, '') as ConcatValues
 from DimensionAttributeValueSetItemView t1
   join DIMENSIONHIERARCHYLEVELVIEW t4
 on t4.DIMENSIONATTRIBUTE = t1.DIMENSIONATTRIBUTE
  where
		t4.HIERARCHYrecid = 68719485163
 group by t1.DIMENSIONATTRIBUTEVALUESET
чую, что можно как-то применить регулярные выражения или stuff, но знаний не хватает
__________________
Felix nihil admirari