1

我有一份“收据信息报告”。例如

ID         Name                Date             Createtor        Payment Date

1          Bob               12.12.2012           bb               01.01.2013

2          Smith             15.01.2010           smt              15.02.2011

3          Peter             21.02.2011           ptr                  null       

4          Sarah             18.06.2012           srh              23.07.2012

我想像这样在这个报告中添加一个参数;

  • 列出所有收据(然后它会列出上面的报告)

  • 列出所有由 Sarah 创建的收据

  • 列出所有已付款的收据。

  • 列出所有未付款的收据。

我创建了没有参数的报告。如何将这些参数调整到我的报告中?

4

1 回答 1

0

您可以按如下方式参数化您的查询:

IF @PAYMENTSTATUS = 'ALL'
BEGIN
SELECT ID, NAME, [DATE], CREATOR, PAYMENTDATE FROM RECEIPT 
WHERE NAME = CASE @NAME WHEN 'ALL' THEN NAME ELSE @NAME END 
END
IF @PAYMENTSTATUS = 'PAID'
BEGIN
SELECT ID, NAME, [DATE], CREATOR, PAYMENTDATE FROM RECEIPT 
WHERE NAME = CASE @NAME WHEN 'ALL' THEN NAME ELSE @NAME END 
AND PAYMENTDATE IS NOT NULL
END
IF @PAYMENTSTATUS = 'UNPAID'
BEGIN
SELECT ID, NAME, [DATE], CREATOR, PAYMENTDATE FROM RECEIPT 
WHERE NAME = CASE @NAME WHEN 'ALL' THEN NAME ELSE @NAME END 
AND PAYMENTDATE IS NULL
END 

如果不是我无法在 SQL where 子句中正确判断日期列的大小写,那么它可能会更简单,那么您将不需要 3 个 if 语句。

接下来,您可以在参数属性中使用不同的数据集,从查询中获取值,以填充您的 @Name 参数,例如

select 'ALL' 
UNION
SELECT DISTINCT NAME FROM RECEIPT

最后,您可以简单地使用@PAYMENTSTATUS 参数的可用值并指定值'ALL'、'PAID'、'UNPAID'。

于 2013-02-05T06:52:54.140 回答