2009-05-21 5 views
2

У меня есть отчет, который должен отображать данные учета из разных мест или во все местоположения.Параметры запроса SSRS 2008

Table_sales:

PartId Rev  LocId 
1   $10  1 
2   $2  1 
3   $5  2 

Допустим, запрос что-то основное, как это, чтобы получить все доходы:

SELECT SUM(rev) FROM Table_sales 

Если я хочу, чтобы иметь возможность ограничить отчет в конкретном месте я бы необходимо изменить его на:

SELECT SUM(Rev) FROM Table_sales WHERE LocId = @param 

Но если бы я сделал это, как бы получить все места без с несколькими запросами?

FYI Параметр фильтра SQL 2008, похоже, не работает с фактическим запросом, который я использую, поскольку фактический запрос использует группу по функциям.

Также запросы запросов DataSet SSRS 2008 могут быть выражениями, но я не могу заставить их работать.

+0

Вы хотите «ограничить отчет в конкретном месте», но вы также хотите, чтобы «получить все места». Можете ли вы прояснить явный конфликт намерений? – Andomar

ответ

3

Я не уверен, о параметрах фильтра или набора данных запросов вы упоминали в SSRS 2008, но в некоторых старых версиях SSRS, я видел вещи, как это:

SELECT SUM(Rev) FROM Table_sales WHERE LocId = @param or 'All' = @param 

Я сомнительно, что это самый эффективный способ сделать это, но он позволяет иметь 1 запрос, в котором вы можете выбрать либо все результаты (путем передачи термина «Все» в качестве параметра), либо просто требуемого LocId (путем передачи соответствующего LocId как параметр).

+5

Это то, что мы обычно делаем для таких случаев. Вы также можете сделать что-то вроде WHERE LocId = COALESCE (@param, LocId) и передать null в качестве параметра для «всего» случая ... но я сомневаюсь, что это заметно быстрее/эффективнее. –

+0

Интересная идея о COALESCE - что раньше не приходило в голову. –

+0

Спасибо, оба метода работают и являются хорошими идеями. – MaxGeek

0

Может быть, вы можете использовать это:

SELECT SUM(Rev) FROM Table_sales WHERE LocId IN (@param) 
+0

Означает ли это тот случай, когда я хочу получить их все? Например, я бы передал нулевой параметр или определенную строку типа «Все» или что-то еще. – MaxGeek

Смежные вопросы