繁体   English   中英

如何在CASE内部使用IN

[英]How to use IN inside of CASE

SELECT T_MW.*
INTO #temp
FROM T_MWP T_MW
WHERE T_MW.CompanyID = 2
AND (
    CASE 
        WHEN @Currency IS NOT NULL
            THEN (
                    T_MW.Currency IN (
                        SELECT *
                        FROM #Currency
                        )
                    )
        END
    )
AND (
    CASE 
        WHEN @Asset IS NOT NULL
            THEN (
                    T_MW.Asset IN (
                        SELECT *
                        FROM #Asset
                        )
                    )
        END
    )

这里的#Asset是一个包含资产的表,而#Currency是一个包含Currency的临时表。 #Asset和#Currency使用以下查询创建

SELECT *
INTO #Asset
FROM dbo.Split(@Asset, ',');

使用OR代替大小写

SELECT 
T_MW.*
INTO #temp
FROM T_MWP T_MW
WHERE T_MW.CompanyID = 2
AND 
(
    (
       @Currency IS NOT NULL
       AND 
       T_MW.Currency IN 
       (
          SELECT * FROM #Currency
       )
    )
    OR
    @Currency IS NULL
)
AND 
(
    (
       @Asset IS NOT NULL
       AND
       T_MW.Asset IN 
       (
            SELECT * FROM #Asset
        )
    )
    OR
    @Asset IS NULL
)
SELECT 
T_MW.*
INTO #temp
FROM T_MWP T_MW
WHERE T_MW.CompanyID = 2
AND 
(
(
   @Currency IS NOT NULL
   OR 
   T_MW.Currency IN 
   (
      SELECT * FROM #Currency
   )
)
)
AND 
(
(
   @Asset IS NOT NULL
   OR
   T_MW.Asset IN 
   (
        SELECT * FROM #Asset
    )
)
)

暂无
暂无

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

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