Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSRS. Параметры. Поворот таблицы (на пример Pivot)  [new]
YoungPadawan
Member

Откуда:
Сообщений: 5
Здравствуйте, ув. форумчане!
Есть таблица RSReportParams с полями ExecGUID, ParamName, ParamValue. В этой таблице хранятся параметры, передаваемые в отчет.
Запрос DataSet'a для получения параметров
select execguid, mainorganizationid, organizationid, dataareaid


from (select paramname, paramvalue
                  from rsreportparam
                 where execguid = @execguid) as sourcetable
                 pivot (max(paramvalue) for paramname in 
			(execguid, mainorganizationid, organizationid, dataareaid)) as paramtable


execguid, mainorganizationid, organizationid, dataareaid - это ParanName в таблице RSReportParams, а также мои параметры отчета.

В результате выполнения этого запроса у меня получается таблица paramtable с полями execguid, mainorganizationid, organizationid, dataareaid и с одной строкой.

Прошу помочь с советом в том как мне перестроить мой запрос для выборки параметров, что бы мои параметры хранили несколько значений. То есть таблица paramtable хранила несколько строк.
Например у меня есть такие данные в таблице RSReportParams
ExecGUID ParamName ParamValue
0001 mainorganizationid 0901
0001 organizationid 097807
0001 organizationid 097806


Хочу получить такую таблицу paramtable
ExecGUID mainorganizationid organizationid
0001 0901 097806
0001 0901 097807

Буду благодарен за помощь в перестроении этого запроса или же за ссылки на примеры с использованием pivot/unpivot с достижением такого же результата.
Спасибо.
22 фев 17, 11:01    [20236142]     Ответить | Цитировать Сообщить модератору
 Re: SSRS. Параметры. Поворот таблицы (на пример Pivot)  [new]
komrad
Member

Откуда:
Сообщений: 5741
YoungPadawan,

я может еще не проснулся конечно, но зачем Вам пивот?

;with tbl as 
	(
		select '0001'[id],'mainorganizationid'[paramname],'0901'[paramvalue] union all 
		select '0001','organizationid','097807' union all 
		select '0001','organizationid','097806' 
		union all
		select '0002','mainorganizationid','0902' union all 
		select '0002','organizationid','098807' union all 
		select '0002','organizationid','098806' 
		union all
		select '0003','mainorganizationid','0903' union all 
		select '0003','organizationid','099807' union all 
		select '0003','organizationid','099806' 
	)
select 
	t1.id
	,t1.paramvalue [main]
	,t2.paramvalue [organizationid]
from tbl t1
join tbl t2 on t1.id=t2.id and t1.paramname='mainorganizationid'
where t1.paramvalue<>t2.paramvalue
22 фев 17, 11:38    [20236297]     Ответить | Цитировать Сообщить модератору
 Re: SSRS. Параметры. Поворот таблицы (на пример Pivot)  [new]
YoungPadawan
Member

Откуда:
Сообщений: 5
komrad, спасибо. Да, ваш вариант работает. Спасибо за помощь. Единственное что для каждого параметра нужно делать join таблицы, но это для меня не критично.
Вот такой запрос у меня получился в итоге
select execguid, mainorganizationid, organizationid, dataareaid


from (select  t1.EXECGUID, t1.PARAMVALUE as mainorganizationid, t2.PARAMVALUE as organizationid, t3.PARAMVALUE as dataareaid
	from RSREPORTPARAM t1
	join RSREPORTPARAM t2
		on t1.EXECGUID  = t2.EXECGUID 
   	       AND t2.PARAMNAME = 'organizationid'
	join RSREPORTPARAM t3
	        on t1.EXECGUID  = t3.EXECGUID 
   	       AND t3.PARAMNAME = 'dataareaid'
where t1.EXECGUID  = @execguid
   AND t1.PARAMNAME = 'mainorganizationid') as paramtable


Ещё раз спасибо.
22 фев 17, 12:32    [20236617]     Ответить | Цитировать Сообщить модератору
 Re: SSRS. Параметры. Поворот таблицы (на пример Pivot)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
YoungPadawan,

не обязательно JOIN достаточно CASE в выводе
22 фев 17, 12:33    [20236626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить