首页新闻找找看学习计划

SQL 将子查询的结果拼接

0
悬赏园豆:20 [已关闭问题] 关闭于 2013-05-13 14:46

如题:

SELECT (SELECT AchievementsID FROM dbo.PerformanceAchievements WHERE MainID=a.MainID)[AchiecementsID],*
FROM dbo.PerformanceMain a WHERE PerformanceYear=2012 AND a.MainID='0B57109A-9290-4721-884A-005167613320'

 

执行结果:

消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

 

其中:

SELECT AchievementsID FROM dbo.PerformanceAchievements WHERE MainID=a.MainID

查询结果:

EBE0C1C1-6B32-441E-8E7B-3461318C7225
0F67E722-4BC2-4E84-A3AB-B01FE80AACEA
ACD2E55F-CE54-477B-9D12-C483D37C2720
DA38C999-7FCC-4406-9EFB-E5820C2A8559
5456EEB7-3B6F-473D-8ACD-FD68CB089E01

 

最终想要结果:将查询的结果拼接成一行一列用分割符隔开

 

现在想写个通用的函数,可是目前貌似无法表达。

那种sql for xml raw,elements 想了下实现不了

 

函数:Func(字段名,分割符号)

最终理想状态:

SELECT Func(AchievementsID,',') FROM dbo.PerformanceAchievements WHERE MainID=a.MainID

like%'远远'%的主页 like%'远远'% | 小虾三级 | 园豆:656
提问于:2013-01-11 15:37
< >
分享
所有回答(4)
0
滴答的雨 | 园豆:3690 (老鸟四级) | 2013-01-11 15:42

这个与问题无关

支持(0) 反对(0) like%'远远'% | 园豆:656 (小虾三级) | 2013-01-11 18:28

@like%'远远'%: 使用游标循环不能拼接你的字符串?

支持(0) 反对(0) 滴答的雨 | 园豆:3690 (老鸟四级) | 2013-01-11 19:13
0

可以先定义一个变量

declare @str varchar(max)

SELECT @str=@str + AchievementsID+',' FROM dbo.PerformanceAchievements WHERE MainID=a.MainID

Rich.T | 园豆:3438 (老鸟四级) | 2013-01-11 15:49
0

declare @str varchar(MAX)
set @str=''
select @str=@str+','+Cast([CardNo] as varchar(20)) from [MemeberCard]
select RIGHT(@str,LEN(@str)-1) as CardNos

~~峰~~ | 园豆:202 (菜鸟二级) | 2013-01-11 16:10

那这个就不能写成通用的了,需求是 从表中所有字段都需拼接

支持(0) 反对(0) like%'远远'% | 园豆:656 (小虾三级) | 2013-01-11 18:07
0

这个可以实现,我查的是用户表,还有一个是用户和用户的关系表,是个一对多的关系

就是一个用户,然后跟了他管了哪些人,可以实现,不懂可以问我

SELECT TOP 10
        *
FROM    ( SELECT    UserName ,
                    Account
          FROM      frmuser
        ) A
        OUTER APPLY ( SELECT    [usernames] = REPLACE(REPLACE(REPLACE(( SELECT
                                                              ControlAccount AS value
                                                              FROM
                                                              permuserrelation N
                                                              WHERE
                                                              CurrentAccount = A.account
                                                              FOR
                                                              XML
                                                              AUTO
                                                              ),
                                                              '"/><N value="',
                                                              '/'),
                                                              '<N value="', ''),
                                                      '"/>', '')
                    ) N 
dearz | 园豆:588 (小虾三级) | 2013-01-24 17:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册