日期:2014-05-19  浏览次数:20514 次

一个简单的确又不简单的SQL语句...
Table   a
a1 a2 a3
1 a aaaa
2 b aaaa
3 c aaaa
4 d aaaa
5 e aaaa
-------------
result
a1 a2 a3 a4 a5
a1 b c d e

----
这个SQL怎么写啊?

------解决方案--------------------
如果只是這幾條數據,直接這麼寫。

Select
Max(Case a1 When 1 Then a2 Else ' ' End) As a1,
Max(Case a1 When 2 Then a2 Else ' ' End) As a2,
Max(Case a1 When 3 Then a2 Else ' ' End) As a3,
Max(Case a1 When 4 Then a2 Else ' ' End) As a4,
Max(Case a1 When 5 Then a2 Else ' ' End) As a5
From
a

但是我估計你的問題應該不會這麼簡單。 :)
------解决方案--------------------
declare @s varchar(8000)
select @s = isnull(@s, ' ') + ', max(case a2 when ' ' ' + a2 + ' ' ' then a2 else null end) as [a ' + ltrim(a1) + '] '
from a
select @s = 'select ' + stuff(@s, 1, 1, ' ') + ' from a '

exec(@s)