求助 简单的行转列问题
有表1
列1 列2 列3 列4
1标 a 12 10
1标 b 8 3
1标 c 2 5
1标 d 6 8
2标 a 6 10
2标 b 3 10
2标 c 8 10
2标 d 11 10
2标 f 2 10
3标 a 4 10
3标 d 12 10
3标 e 12 10
3标 f 12 10
4标 a 12 10
4标 b 12 10
4标 d 12 10
4标 f 12 10
如果能得到以下表(没有的就以null填充),其实也就是常说的行转列:
表2
列1 1标 2标 3标 4标
a 12 6 4 12
b 8 6 null 12
c 2 8 null null
d 6 11 12 12
e null null 12 null
f null 2 12 12
------解决方案--------------------
--如果列1的標的種類不是固定的
Declare @S Varchar(8000)
Select @S = ' Select 列2 As 列1 '
Select @S = @S + ', Max(Case 列1 When ' ' ' + 列1 + ' ' ' Then 列3 Else Null End) As [ ' + 列1 + '] '
From 表1 Group By 列1
Select @S = @S + ' From 表1 Group By 列2 '
EXEC(@S)
------解决方案--------------------declare @sql varchar(8000)
set @sql = 'select 列2, '