【问题标题】:Stored procedure that does not filter if a variable is null如果变量为空则不过滤的存储过程
【发布时间】:2012-06-25 16:41:59
【问题描述】:

我有这个存储过程,我想将其用于我的 SAP 水晶报表。

SELECT
    t0.DocNum AS ReceiptNo, t2.DocEntry AS InvoiceNo, 
    t0.DocDate, t1.CheckAct,
    t1.CheckNum, t3.AcctName, 
    CASE 
        WHEN (t0.CardName IS NULL) THEN t0.Address
                                   ELSE t0.CardName
    END AS CustName,
    CASE 
        WHEN ((t1.CheckNum IS NULL OR t1.CheckNum = 0)
               AND t0.TrsfrRef IS NULL) THEN 'Cash'
        WHEN (t1.CheckNum > 0
               AND t0.TrsfrRef IS NULL) THEN 'Cheque'
        ELSE 'Transfer'
    END AS PayType, 
    CASE 
        WHEN (t1.CheckNum > 0 AND t0.TrsfrRef IS NULL) THEN t1.CheckSum
        ELSE t0.DocTotal
    END AS DocTotal
FROM
    ORCT t0
LEFT OUTER JOIN 
    RCT1 t1 ON t1.docnum = t0.docnum
LEFT OUTER JOIN 
    RCT2 t2 ON t0.DocEntry = t2.DocNum
LEFT OUTER JOIN 
    OACT t3 ON t1.CheckAct = t3.AcctCode
WHERE
    t0.DocDate BETWEEN @BeginDate AND @EndDate
    AND t0.Canceled = 'N'
    AND t3.AcctCode = @Account

在最后一行,我声明了一个变量@Account,它按帐号过滤结果。我希望我的报告能够正常工作,如果未选择帐户(空),则返回所有帐号的结果。

我如何做到这一点?

任何帮助表示赞赏。

【问题讨论】:

    标签: sql crystal-reports-2008


    【解决方案1】:

    如果@Account 为空,您似乎希望有效地省略最后一个子句。如果是这样,那么试试这个:

    ... AND t0.Canceled = 'N' AND
    (@Account IS NULL OR t3.AcctCode = @Account)
    

    【讨论】:

      【解决方案2】:

      添加到末尾

      or t3.AcctCode is null
      

      【讨论】:

        【解决方案3】:

        您可以使用IF ELSE,例如

        IF @Account IS NULL
            BEGIN
                --Your Query without "AND t3.AcctCode = @Account"
            END
        ELSE
            BEGIN
                -- Your Query
            END
        

        您也可以将最后一行更改为:

        AND (t3.AcctCode = @Account OR @Account IS NULL)
        

        【讨论】:

          猜你喜欢
          • 2018-12-05
          • 1970-01-01
          • 2011-11-22
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多