我正在嘗試使用插入中的案例創建一些邏輯
這是我正在使用的代碼,但無法編譯
INSERT INTO @MyList VALUES
(CASE @pCodTraitement
WHEN 'CGPFDG' then '0220'
WHEN 'CGPPS' then '5275'
WHEN 'CGPFP' then '5276'
WHEN 'CGPGC' then '5277', '0220'
ELSE '0241'
END )
解決方案 '''5277''' ',' '''0220''' 不起作用
我需要像專案而不是文本一樣滿足第四個條件,因為我想在之后使用它
我不希望它作為文本塊
因為我會瀏覽它的專案
...
SELECT *
FROM MyTable
WHERE MyColumn IN (SELECT Value FROM @MyList)
...
uj5u.com熱心網友回復:
由于您需要在其中一種條件下插入多個值,并且 a 不可能以CASE這種方式回傳多個值,因此您需要將操作分開并執行類似的操作
IF @pCodTraitement = 'CGPGC'
BEGIN
INSERT INTO @MyList
VALUES ('5277'), ('0220');
END ELSE
BEGIN
INSERT INTO @MyList VALUES
(CASE @pCodTraitement
WHEN 'CGPFDG' then '0220'
WHEN 'CGPPS' then '5275'
WHEN 'CGPFP' then '5276'
ELSE '0241'
END )
END
uj5u.com熱心網友回復:
另一種方法是使用UNION ALL匹配的多行CGPGC:
INSERT INTO @MyList SELECT '0220' WHERE @pCodTraitement = 'CGPFDG'
UNION ALL SELECT '5275' WHERE @pCodTraitement = 'CGPPS'
UNION ALL SELECT '5276' WHERE @pCodTraitement = 'CGPFP'
UNION ALL SELECT '5277' WHERE @pCodTraitement = 'CGPGC'
UNION ALL SELECT '0220' WHERE @pCodTraitement = 'CGPGC';
或者構建VALUES派生表和過濾器:
INSERT INTO @MyList
SELECT outcol FROM
(
VALUES('CGPFDG','0220'),
('CGPPS', '5275'),
('CGPFP', '5276'),
('CGPGC', '5277'),
('CGPGC', '0220')
) AS dv(pCodTraitement, outcol)
WHERE pCodTraitement = @pCodTraitement;
uj5u.com熱心網友回復:
在這里猜測,但也許是以下解決方案之一:
INSERT INTO @MyList (ColumName)
SELECT SS.[value]
FROM (VALUES(CASE @pCodTraitement WHEN 'CGPFDG' THEN '0220'
WHEN 'CGPPS' THEN '5275'
WHEN 'CGPFP' THEN '5276'
WHEN 'CGPGC' THEN '5277,0220'
ELSE '0241'
END))V(S)
CROSS APPLY STRING_SPLIT(V.S,',') SS;
DECLARE @Values table (CodTraitement, [value]);
INSERT INTO @Values (CodTraitement, [value])
VALUES('CGPFDG','0220'),
('CGPPS','5275'),
('CGPFP','5276'),
('CGPGC','5277'),
('CGPGC','0220');
INSERT INTO @MyList (ColumName)
SELECT ISNULL(V.[value],'0241')
FROM (VALUES(@pCodTraitement))p(CodTraitement)
LEFT JOIN @Values V ON p.CodTraitement = V.CodTraitement;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410554.html
標籤:
上一篇:如何從長表轉為寬表?
