我有一份"收据信息报告"。例如
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创建的所有收据
列出已支付的所有收据。
列出尚未支付的所有收据。
我创建了没有参数的报告。如何将这些参数调整到我的报告中?
答案 0 :(得分: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'。