这样的SQL怎样写

yqwaxyq 2006-07-04 08:32:34
我有一长表
字段
a b c
123 22 33
123 24 25
124 26 35
124 26 25
我要变成
123 22 33 24 25
124 26 35 26 25
我只是举个例子
如果是
字段
a b c
123 22 33
123 24 25
124 26 35
124 26 25
124 25 36
那就要变成
123 22 33 24 25
124 26 35 26 25 25 36
这样的SQL怎样写

...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqwaxyq 2006-07-04
  • 打赏
  • 举报
回复
谢谢,明天我试试
paoluo 2006-07-04
  • 打赏
  • 举报
回复
寫一個存儲過程來實現

--建立測試環境
Create Table TEST
(a Int,
b Int,
c Int)
--插入數據
Insert TEST Select 123, 22, 33
Union All Select 123, 24, 25
Union All Select 124, 26, 35
Union All Select 124, 26, 25
Union All Select 124, 25, 36
GO
--建立存儲過程
Create ProceDure SP_TEST
As
Begin
Declare @I Int,@MaxCount Int ,@S Varchar(8000)
Select @I=1,@S=''

Select ID=Identity(Int,1,1),* Into #T From TEST
Select *,IDCount=(Select Count(*) From #T Where a=A.a And ID<=A.ID) Into # From #T A
Select @MaxCount=Max(IDCount) From #

While @I<=@MaxCount
Begin
Select @S=@S+',Max(Case IDCount When '+Rtrim(@I)+' Then b Else 0 End) As col'+Rtrim(@I*2-1)+',Max(Case IDCount When '+Rtrim(@I)+' Then c Else 0 End) As col'+Rtrim(@I*2)
Select @I=@I+1
End

Select @S='Select a'+@S+' From # Group By a'
EXEC(@S)

Drop Table #T,#
End
GO
--測試
EXEC SP_TEST
GO
--刪除測試環境
Drop Table TEST
Drop ProceDure SP_TEST
GO
--結果
/*
a col1 col2 col3 col4 col5 col6
123 22 33 24 25 0 0
124 26 35 26 25 25 36
*/
yqwaxyq 2006-07-04
  • 打赏
  • 举报
回复
5列,列名可以自己起,也可以无列名
paoluo 2006-07-04
  • 打赏
  • 举报
回复
字段
a b c
123 22 33
123 24 25
124 26 35
124 26 25
我要变成
123 22 33 24 25
124 26 35 26 25
--------------------
這生成的是5列還是2列??

如果是5列,列名應該怎麼寫??

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧