Jak użyć tablicy parametrów w PM?

Jesteś tu:
← Wszystkie tematy

Załóżmy, że w PM zdefiniowaliśmy słownik wielowartościowy z kluczem postaci “RRRR-MM”. Słownik ma cztery wartości, np st1,st2,st3,st4.

Możemy pobrać z niego wartości w taki sposób:

SELECT 
tab.okres,
tab.st1,
 tab.st2, tab.st3, tab.st4
FROM  
(SELECT 
wiersz.ref.value('(Key/text())[1]', 'varchar(50)') AS okres, 
wart.ref.value('(anyType/text())[1]', 'decimal (18,2)') AS 'st1', 
wart.ref.value('(anyType/text())[2]', 'decimal (18,2)') AS 'st2', 
 wart.ref.value('(anyType/text())[3]', 'decimal (18,2)') AS 'st3', 
wart.ref.value('(anyType/text())[4]', 'decimal (18,2)') AS 'st4' 
FROM 
PulpitMenedzerski.Dashboard.DictionaryItem i 
CROSS apply
(SELECT   cast(value AS xml)) AS X(X) 
CROSS apply X.X.nodes('MultiValueItem') AS wiersz(ref) 
CROSS apply wiersz.ref.nodes('Values') AS wart(ref)
WHERE    i.DictionaryId = 1
) 
AS tab

Jeżeli z powyższego zapytania utworzymy widok, odwołanie do stawek będzie bardzo proste:

set @rok = year(cast (@okres+'-01' as date));
set @mies = month(cast (@okres+'-01' as date));

declare @st1  decimal (5,2), @st2 decimal(5,2) ,@st3  decimal (5,2), @st4  decimal (5,2);

select @st1 = st1 , @st2 = st2 , @st3 = st3 , @st4 = st4  FROM vStawki where okres = @okres;