我有一个包含大约10列数据的表格,我希望能够创建一个只根据用户定义的参数提取相关数据的存储过程。 fact.Spend
表的简化版本如下所示:
Location | Year | SpendYear
----------+--------+-----------
New York | 2015 | 25.00
New York | 2016 | 23.20
Dallas | 2015 | 29.30
Dallas | 2016 | 25.32
San Fran | 2015 | 23.33
San Fran | 2016 | 23.97
我尝试用此做的一个非常基本的版本是:
CREATE PROCEDURE spPullSpendData
(@Location VARCHAR(20), @SpendYear SMALLINT)
AS
SELECT *
FROM fact.Spend
WHERE Location = @Location
AND SpendYear = @SpendYear
但我希望@SpendYear
参数是可选的,如果没有用户输入则默认为所有年份。我尝试使用子查询进行了一些变化,但到目前为止,没有什么能够解决问题。
答案 0 :(得分:1)
SELECT
*
FROM
fact.Spend
WHERE
(Location = @Location)
AND
(SpendYear = @SpendYear or @SpendYear IS NULL)