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

求一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
*/