如果你不介意的动态
Declare @Cols varchar(max) = '>>>'
;with cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
cte2(N) As (Select Row_Number() over (Order By (Select NULL)) From (Select N=1 From cte1 a, cte1 b) A) --<< 100 Columns
Select @Cols = Replace(@Cols+',C'+cast(N as varchar(5))+'=sum(C'+cast(N as varchar(5))+')','>>>,','') from cte2
Declare @From varchar(max) = '>>>'
;with cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
cte2(N) As (Select Row_Number() over (Order By (Select NULL)) From (Select N=1 From cte1 a) A) --<< 10 Tables
Select @From = Replace(@From+'Union All Select * from T'+cast(N as varchar(5))+' ','>>>Union All','') from cte2
Declare @SQL varchar(max) ='Select ID,'[email protected]+' From ('[email protected]+') A Group By ID'
Exec(@SQL)
请标记相应的RDMS ... SQL Server,Oracle,...? –