簡體   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