środa, 9 października 2013

SQL Server - jak z ciągu dzielonego separatorem zrobić kolumny

create function [dbo].[function]() RETURNS @ResultTable TABLE ( id_tabeli int, atrybut_opis varchar(1000) ) as begin declare @id_w int declare @id_p varchar(50) declare @p int declare @wynik varchar(1000) DECLARE C1 CURSOR READ_ONLY FOR SELECT distinct id_tabeli , id_atrybut FROM dbo.tabela_1 -- [dbo].[v_r_sprawy_przejete_km] OPEN C1 FETCH NEXT FROM C1 INTO @id_w, @id_p WHILE @@FETCH_STATUS = 0 BEGIN while len(@id_p) > 0 begin if PATINDEX('%;%', @id_p) > 0 begin set @p = SUBSTRING(@id_p, 0 , PATINDEX('%;%', @id_p)) set @wynik = (select distinct atrybut_opis from dbo.tabela_2 where id_atrybut = @p) insert @ResultTable(id_tabeli, atrybut_opis) values (@id_w, @wynik) set @id_p = SUBSTRING(@id_p, len(@p)+2, LEN(@id_p)) end else begin set @p = @id_p set @id_p = null set @wynik = (select distinct atrybut_opis from dbo.tabela_2 where id_atrybut = @p) insert @ResultTable(id_tabeli, atrybut_opis) values (@id_w, @wynik) end end FETCH NEXT FROM C1 INTO @id_w, @id_p END CLOSE C1 DEALLOCATE C1 return end

środa, 20 marca 2013

SSRS SQL 2008R2 ReportServer DB Lista Raportów z parametrami

--lista raportów z parametrami: ;WITH XMLNAMESPACES ( DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition', 'http://schemas.microsoft.com/SQLServer/reporting/reportdesigner' AS rd ) SELECT NAME as NazwaRaportu , PATH as SciezkaRaportu , x.value ('@Name', 'VARCHAR(100)') AS NazwaParametru , x.value ('DataType[1]', 'VARCHAR(100)') AS TypDanych , x.value ('AllowBlank[1]', 'VARCHAR(50)') AS CzyPuste , x.value ('Prompt[1]', 'VARCHAR(100)') AS Tekst , x.value ('Hidden[1]', 'VARCHAR(100)') AS Ukryty , x.value ('data(DefaultValue/Values/Value)[1]', 'VARCHAR(100)') AS Wartosc FROM ( SELECT PATH , NAME , CAST(CAST(content AS VARBINARY(MAX)) AS XML) AS ReportXML FROM ReportServer.dbo.Catalog WHERE CONTENT IS NOT NULL AND TYPE = 2 ) A CROSS APPLY ReportXML.nodes('/Report/ReportParameters/ReportParameter') R(x) --WHERE NAME = 'Nazwa Raportu' ORDER BY NAME