Reporting Services - zapytanie o wartości wielu wartości zwracające brak wyników
Korzystanie z SSRS (SQL Server 2005) Ustawiłem dwa raporty. Aby ułatwić wyjaśnienie, nazwijmy jeMAIN_REPORT
iSUB_REPORT
.
MAIN_REPORT
uruchamia zapytanie, które zwraca zestaw obszarów, z wieloma nazwami tagów na obszar:
AREA Tagname
----------
A1 T1
A1 T2
A2 T3
A3 T4
Jeśli wybierzesz jedną z komórek obszaru, otworzy sięSUB_REPORT
i przekazuje parametr do@ParentTagNames
za pomocąJoin(Parameters!ResultsOfSearch.Value,",")
. ResultsOfSearch
jest równa powyższej kolumnie Zmienna (jeszcze nie odkryłem, jak ograniczyć zmienne tylko do tych w wybranym obszarze, ale martwię się o to później).
SUB_REPORT
pobiera przekazany parametr i odpytuje ogromną bazę danych o zmienną i zwraca min, max i średnią dostępnych wartości:
SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)),
Maximum = convert(decimal(38, 2), Max(h.Value)),
Average = convert(decimal(38, 2), Avg(h.Value))
FROM INSQL.Runtime.dbo.History h
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = 'LATEST'
AND h.wwRetrievalMode = 'Cyclic'
AND h.wwResolution = '60000'
AND h.Value > '-1.0'
AND h.DateTime >= '2009-09-01 12:00:00'
AND h.DateTime <= '2009-09-02 16:00:00'
GROUP BY h.TagName
Jeśli jednak@ParentTagNames
jest równa więcej niż jednej wartości, nie zwraca danych. Jeśli jest równy pojedynczemu znacznikowi, zwraca dane. Pomyślałem, że to musiało mieć coś wspólnego z formatowaniem danych wewnątrz@ParentTagNames
jak to minęłoMAIN_REPORT
, ale to nie ma znaczenia.
Wypróbowałem następujące formaty:
T1,T2,T3,T4,T5,T6
'T1','T2','T3','T4','T5','T6'
Upewniłem się, że dla parametru jest sprawdzana wielowartościowość@ParentTagNames
. Google pomyślnie zawiódł mnie.
Ktoś?
EDYCJA: Magia Profiler!
exec sp_executesql N'SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)),
Maximum = convert(decimal(38, 2), Max(h.Value)),
Average = convert(decimal(38, 2), Avg(h.Value))
FROM INSQL.Runtime.dbo.History h
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = ''LATEST''
AND h.wwRetrievalMode = ''Cyclic''
--AND h.wwResolution = @Resolution
AND h.wwResolution = ''60000''
AND h.Value > ''-1.0''
--AND h.DateTime >= @StartTime
--AND h.DateTime <= @EndTime
AND h.DateTime >= ''2009-09-01 12:00:00''
AND h.DateTime <= ''2009-09-02 16:00:00''
GROUP BY h.TagName',N'@ParentTagNames nvarchar(46)',@ParentTagNames=N'M12_CPM_Filling_250.Value,M8_Filling_391.Value'