SELECT * INTO #T1 FROM ( SELECT 1 ID,'A+B' 公式 union ALL SELECT 2 ID,'A+B+C' 公式 ) tt declare @tttt varchar(MAX),@ttt varchar(MAX) SELECT @tttt = ISNULL(STUFF((select ' WHEN '+ CONVERT(nvarchar(100), tt.ID) + 'THEN '+ tt.公式 from #T1 tt for xml path('')),1,1,''),'') SET @ttt = N' SELECT tt.A,CASE tt.ID '+@tttt+' ELSE 0 END FROM( SELECT 1 A,2 B,3 C,1 ID union ALL SELECT 2 A,3 B,3 C,2 ID union ALL SELECT 1 A,3 B,3 C,1 ID union ALL SELECT 1 A,1 B,3 C,1 ID ) tt ' --SELECT @ttt exec(@ttt) DROP TABLE #T1 --DROP TABLE #T2