原點表
So So_Line So other
ABC 2 rrr35
BDC 2 rrr35
結果表
- So So_Line So other
- ABC-1 2 rrr35
- ABC-2 2 rrr35
- ABC-3 2 rrr35
- ABC-4 2 rrr35
- ABC-5 2 rrr35
- BDC-1 2 rrr35
- BDC-2 2 rrr35
它沒有這樣作業
DECLARE @MyVariable VARCHAR(max);
SET @MyVariable = 'So,So_Line,So_other';
SELECT CONCAT(So, t.x) as @MyVariable
FROM [test].[dbo].[foo] CROSS JOIN (VALUES('-1'),('-2'),('-3'),('-4'),('-5')) t(x) WHERE So = 'ABC'
Union
SELECT CONCAT(So, t.x) as @MyVariable
FROM [test].[dbo].[foo] CROSS JOIN (VALUES('-1'),('-2')) t(x) WHERE So = 'BDC'
它以這種方式作業
SELECT CONCAT(So, t.x) as So,So_Line,So_other
FROM [test].[dbo].[foo] CROSS JOIN (VALUES('-1'),('-2'),('-3'),('-4'),('-5')) t(x) WHERE So = 'ABC'
Union
SELECT CONCAT(So, t.x) as So,So_Line,So_other
FROM [test].[dbo].[foo] CROSS JOIN (VALUES('-1'),('-2')) t(x) WHERE So = 'BDC'
該表只是示例,我處理的表有 300 列,我不能只在 as 之后添加,所以我想我可以創建一個變數。
但它沒有在附近作業@MyVariable,有人可以幫助我嗎?
uj5u.com熱心網友回復:
變數是一個值持有者,因此 SQL Server 會相應地處理它。
要獲得所需的結果,您應該進行動態查詢。
DECLARE @MyVariable VARCHAR(max);
SET @MyVariable = 'So,So_Line,So_other';
DECLARE @Dynamic_Query NVARCHAR(MAX)
SET @Dynamic_Query=' SELECT CONCAT(So, t.x) as [' @MyVariable ']
FROM [test].[dbo].[foo] CROSS JOIN (VALUES(''-1''),(''-2''),(''-3''),(''-4''),(''-5'')) t(x) WHERE So = ''ABC''
Union
SELECT CONCAT(So, t.x)
FROM [test].[dbo].[foo] CROSS JOIN (VALUES(''-1''),(''-2'')) t(x) WHERE So = ''BDC'''
exec(@Dynamic_Query)
謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524327.html
標籤:sql服务器
下一篇:在現有查詢中尋求幫助以洗掉重復項
