Как составить сводную группу, используя SQL? - PullRequest
0 голосов
/ 06 мая 2020

Я создал SQL хранимую процедуру:

CREATE PROCEDURE [stored procedure name]
    (@Location [varchar](255),
     @start_date datetime,
     @end_date datetime)
AS
BEGIN
    SELECT id, location, name, begin_date, age, career, phone_number
    FROM information
    WHERE [begin_date] BETWEEN @start_date AND @end_date 
    AND [location] = @Location
END

И есть разные группы в местоположении: Шанхай, Нью-Йорк, Торонто, Сидней, Токио. Но теперь мне хотелось бы иметь еще одну категорию: Все. В этой категории будут отображаться все локации. Поэтому я могу использовать его в SSRS.

То, что я написал:

select 1 as sort_order, 'All' as location
union
select distinct 2 as sort_order, location from information
order by sort_order, location

Но это вернет только раскрывающийся список:

"All", "Shanghai", "New York", "Toronto", "Sydney", "Tokyo"

Когда я нажимаю на Шанхай, Нью-Йорк, Торонто, Сидней , Токио, он работает нормально и отображает соответствующие данные. Но когда я нажимаю «Все», данные не отображаются. Как я могу изменить свой код для достижения цели?

1 Ответ

1 голос
/ 06 мая 2020

Я думаю, вам нужно принять во внимание All:

and ([location] = @Location or @location = 'All')

Часто используется значение NULL, чтобы избежать конфликта с допустимыми значениями:

and ([location] = @Location or @location is null)
...