sql >> Databasteknik >  >> RDS >> Sqlserver

SSRS Multiple Value-parameterfilter baserat på dataset

Jag bestämde mig för att skriva min kommentar till ditt svar, M.Ali, som ett svar på min egen fråga, eftersom jag hittade ett sätt att lösa detta. Jag kanske inte förklarade mitt problem tillräckligt exakt. Jag är medveten om hur ovanstående fungerar, och hur man skickar parametrar baserade på en datauppsättning, ner genom SQL för att skapa en annan datauppsättning, flera värden tillåtna eller inte. Jag uppskattar dock ditt svar!

Problemet jag har är att frågan som skulle definiera min värdelista för parametern, och frågan för den faktiska datamängden, är densamma. Och det är en ENORM fråga. Med andra ord, där det står 'TABELL' i kodexemplet har jag flera hundra rader kod. Och mitt mål var att inte låta hela denna fråga definiera båda datamängderna. Om jag i framtiden måste ändra frågan måste jag göra det på mer än ett ställe. Så här löste jag det:

Jag placerade huvudfrågan i en delad datauppsättning istället för att bädda in den i min rapport. Och jag lade sedan till en rad_nummer-funktion till min fråga så här:

SELECT ID, Value, UserID, rn = ROW_NUMBER() OVER(PARTITION BY UserID ORDER BY UserID)
FROM *my huge query*

Det betyder att det bara finns en 'rn =1'-rad per användar-ID. Sedan gick jag tillbaka till min rapport. Min ursprungliga DataSet1 skulle då bara peka på den delade datamängden. DataSet2 (parametern ett) skulle också peka på den delade datamängden med den skillnaden att jag lade till ett filter till den datamängden som säger 'rn =1'. Jag gjorde sedan en parameter med 'tillåt flera värden' som tog sina värden från DataSet2. Och det fungerar som en smäck. På så sätt kan jag bara gå till den delade datamängden när jag behöver uppdatera frågan, och både DataSet1 och DataSet2 kommer att uppdateras därefter!

Framgång :)

Återigen, tack för ditt svar!



  1. Kapslad select-sats i SQL Server

  2. Postgres trigger för att uppdatera Java-cache

  3. Relationsmodellen

  4. MySQL välj varje dag sista raden sorterad efter datum DESC