首页 > 解决方案 > 如何使用 SQL 进行汇总组?

问题描述

我创建了一个 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"

当我点击上海、纽约、多伦多、悉尼、东京时,它工作正常并显示相应的数据。但是当我点击“全部”时,没有数据出现。如何更改我的代码以实现目标?

标签: sql-serverdatabasereporting-services

解决方案


我认为您需要All考虑:

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

通常,使用一个NULL值来避免与有效值冲突:

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

推荐阅读