繁体   English   中英

在case语句sql server的THEN部分中设置另一个条件

[英]Set another condition in THEN section in case statement sql server

我有一种情况需要设定

CASE JDT1.TransType 
   WHEN 46 THEN  JDT1.Debit > 0
END

这导致错误,如何解决这个问题,我的完整查询是

create PROCEDURE [dbo].[Supplier_Enquiry]   
AS
BEGIN

SELECT        OCRD.CardCode, OCRD.CardName, OCRD.GroupCode, OCRG.GroupName, OCRD.CreditLine, ISNULL(JDT1.FCCurrency,'LKR') AS Currency, JDT1.RefDate, 
                         CAST(OJDT.BaseRef AS int) AS 'Document Number',
CASE  WHEN JDT1.TransType=18 THEN 'Invoice'
          WHEN JDT1.TransType=19 THEN 'Credit Memo'
          WHEN JDT1.TransType=204 THEN 'A/P Down Payment'
          WHEN JDT1.TransType=46 THEN 'Vendor Payment'
          WHEN JDT1.TransType=30 THEN 'Journal Entry'

          END AS 'Transaction', 
                         JDT1.DueDate, JDT1.Debit - JDT1.Credit AS 'Outstanding', JDT1.Debit AS [Amount Dr], JDT1.Credit AS [Amount Cr],ISNULL(VPM1.CheckNum, 0) AS CheckNum
FROM            VPM1 INNER JOIN
                         OVPM ON VPM1.DocNum = OVPM.DocEntry RIGHT OUTER JOIN
                         JDT1 INNER JOIN
                         OCRD ON JDT1.ShortName = OCRD.CardCode INNER JOIN
                         OCRG ON OCRD.GroupCode = OCRG.GroupCode INNER JOIN
                         OJDT ON JDT1.TransId = OJDT.TransId ON OVPM.TransId = OJDT.TransId
WHERE        (OCRD.CardType = 'S')  
AND
(

CASE JDT1.TransType 
    WHEN 46 THEN  JDT1.Debit > 0

END

) 
END

需要一些指导来纠正问题

在这种情况下,您根本不需要案例:

WHERE OCRD.CardType = 'S' 
AND 
(
    JDT1.TransType <> 46
    OR JDT1.Debit > 0
)

因此,仅当TransType = 46时,此选项才会检查借方> 0

...
AND (JDT1.TransType <>46 OR (JDT1.TransType = 46 and JDT1.Debit > 0))
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM