求一SQL语句, 要求字段ggxh相同时字段nbjj字符串叠加
bzjzhbid ggxh amount parameter Para nbjj
553 M6X16;J21-9 2 J21-9 M000006X000016 02=2
554 M8X25;J21-9 16 J21-9 M000008X000025 07=16
555 M6X16;J21-9 5 J21-9 M000010X000025 06=5
............我一年没用c#了,有SQL语句吗?不for行吗?
nbjj字符串叠加成02=2|06=5
553 M6X16;J21-9 7 J21-9 M000006X000016 02=2|06=5
------解决方案--------------------用SQL语句是不能对字符串叠加的,还是在程序中用for吧。
------解决方案--------------------同意楼上的说法,不要去紧想如何解决了,只用SQL无法完成
------解决方案----------------------創建測試環境
Create Table 表
(bzjzhbid Int,
ggxh Varchar(30),
amount Int,
parameter Varchar(20),
Para Varchar(50),
nbjj Varchar(20))
Insert 表 Select 553, 'M6X16;J21-9 ', 2, 'J21-9 ', 'M000006X000016 ', '02=2 '
Union All Select 554, 'M8X25;J21-9 ', 16, 'J21-9 ', 'M000008X000025 ', '07=16 '
Union All Select 555, 'M6X16;J21-9 ', 5, 'J21-9 ', 'M000010X000025 ', '06=5 '
GO
--創建函數
Create Function F_TEST(@ggxh Varchar(30))
Returns Varchar(1000)
As
Begin
Declare @S Varchar(1000)
Select @S = ' '
Select @S = @S + '| ' + nbjj From 表 Where ggxh = @ggxh
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
--測試
Select
Min(bzjzhbid) As bzjzhbid,
ggxh,
SUM(amount) As amount,
Min(parameter) As parameter,
Min(Para) As Para,
dbo. F_TEST(ggxh) As nbjj
From
表
Group By
ggxh
GO
--刪除測試環境
Drop Table 表
Drop Function F_TEST
--結果
/*
bzjzhbid ggxh amount parameter Para nbjj
553 M6X16;J21-9 7 J21-9 M000006X000016 02=2|06=5
554 M8X25;J21-9 16 J21-9 M000008X000025 07=16
*/