[英]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.