Eu tenho um relatório SSRS onde um parâmetro pode ter 3 valores. A consulta select é a mesma em todos os casos, mas a cláusula where precisa verificar diferentes campos de data com base no valor do parâmetro. Isso é possível na mesma consulta?
Consulta:
SELECT OrdNO, OrdType, customer, SalesRep, FundDate, DisbursementDate, Branch, SalesPrice
FROM Orders
-- Case @ReportType=1, use FundDate
where (FundDate >= @FromDate and FundDate <= @ToDate)
-- Case @ReportType=2, use DisbursmentDate
Where (DisbursementDate >= @FromDate and DisbursementDate <= @ToDate)
-- Case @ReportType=3, use both dates
where (FundDate >= @FromDate and FundDate <= @ToDate) or (DisbursementDate >= @FromDate and DisbursementDate <= @ToDate)
Sim, algo como o abaixo.
Ou, para usar as cláusulas WHERE de exemplo que você especificou, que tal as abaixo?
Depende, mas provavelmente sim (com alguns possíveis problemas de desempenho devido a diferentes planos de consulta sendo armazenados em cache). Você pode dar um pouco mais de detalhes sobre quais são exatamente os tipos de valores inseridos no parâmetro? Todos os 3 valores serão datas, o parâmetro em si é um valor de string que você precisa converter para o tipo apropriado e sua consulta está em um procedimento armazenado?