SQLSERVER如何把多行数据转换成一行

按照网上的方法,字符串的可以成功,但是因为我这个客户ID是数值的所以报错了

image.png

image.png

image.png

不知道是不是这样转,但是报错了

孜云 发布于 2021-9-30 16:42 (编辑于 2021-9-30 17:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
free_zzLv6中级互助
发布于2021-9-30 17:32
SELECT
    a,
    stuff((SELECT ',' + b FROM #tb WHERE a = t.a FOR xml path('')),
        1,
        1,
        ''
    )AS b from  # tb AS t
GROUP BY
    a;

最佳回答
0
luojian0323Lv7资深互助
发布于2021-9-30 16:46

db2我知道可以用listagg()函数

你百度下sqlserver的

  • 孜云 孜云(提问者) 百度过了,百度上面的都是用好像和我这不太一样,我不知道怎么改
    2021-09-30 16:49 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-9-30 16:47

试试把 

image.png

改成

select CONCAT(''',''',FCUSTID) from tt 

  • 孜云 孜云(提问者) 不行报错了
    2021-09-30 17:00 
  • Z4u3z1 Z4u3z1 回复 孜云(提问者) 不支持concat????select \'\'\',\'\'\'+CONVERT(NVARCHAR(100),FCUSTID) from tt
    2021-09-30 17:03 
  • 孜云 孜云(提问者) 回复 Z4u3z1 支持CONVERT的,但是合并成一行的时候报错了
    2021-09-30 17:06 
  • Z4u3z1 Z4u3z1 回复 孜云(提问者) 那个斜杠不是系统自动加的。另外报什么错?
    2021-09-30 17:08 
  • 孜云 孜云(提问者) 回复 Z4u3z1 拼接成\',\'是可以的,但是在合并这里是错了,看我截图
    2021-09-30 17:16 
最佳回答
0
hotfog119Lv7初级互助
发布于2021-9-30 16:52(编辑于 2021-9-30 17:34)

SQLsever 里面好像用String_agg函数就可以了

csdn有详细写法:

聚合函数 STRING_AGG_luoganttcc的博客-CSDN博客

或者

用SQL SERVER FOR XML PATH

https://blog.csdn.net/weixin_34379433/article/details/93652001

先把数值转字符串,外面再用FOR XML PATH吧

image.png

  • 孜云 孜云(提问者) 好像不是SQL SERVER 的函数把,直接报错了
    2021-09-30 17:03 
  • hotfog119 hotfog119 回复 孜云(提问者) SQL Server 2017新增的,你的版本可能不对,换其他办法吧
    2021-09-30 17:07 
  • 孜云 孜云(提问者) 回复 hotfog119 是用的这个方法,现在就是这个数值的问题,我其他的全是中文的都可以
    2021-09-30 17:26 
最佳回答
0
CD20160914Lv8专家互助
发布于2021-9-30 16:53

select  convert(varchar,fcustid) as fcustid from tt 

里面这样改一下试呢

最佳回答
0
Rose_RubyLv6初级互助
发布于2021-9-30 17:08(编辑于 2021-9-30 17:43)

sql server

https://blog.csdn.net/Cxy_357/article/details/82190771?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

mysql

image.png

结果

image.png

CREATE TABLE ForgeRock

    ([productName] varchar(13), [description] varchar(57), [aa] int)

;

INSERT INTO ForgeRock

    ([productName], [description], [aa])

VALUES

    ('OpenIDM', 'Platform for building enterprise provisioning solutions', 60),

    ('OpenAM', 'Full-featured access management', 80),

    ('OpenDJ', 'Robust LDAP server for Java', 90),

    ('OpenIDM', 'Platform for building enterprise provisioning solutions', 60),

    ('OpenAM', 'Full-featured access management', 80),

    ('OpenDJ', 'Robust LDAP server for Java', 90),

        ('OpenIDM', 'Platform for building enterprise provisioning solutions', 60),

    ('OpenAM', 'Full-featured access management', 80),

    ('OpenDJ', 'Robust LDAP server for Java', 90),

        ('OpenIDM', 'Platform for building enterprise provisioning solutions', 60),

    ('OpenAM', 'Full-featured access management', 80),

    ('OpenDJ', 'Robust LDAP server for Java', 90),

        ('OpenIDM', 'Platform for building enterprise provisioning solutions', 60),

    ('OpenAM', 'Full-featured access management', 80),

    ('OpenDJ', 'Robust LDAP server for Java', 90),

        ('OpenIDM', 'Platform for building enterprise provisioning solutions', 60),

    ('OpenAM', 'Full-featured access management', 80),

    ('OpenDJ', 'Robust LDAP server for Java', 90)

    

;

-- visit ForgeRock.com for details on the Open Identity Stack

-- sqlfiddle.com is built with OpenIDM

SELECT

  productName,

  [convert(nvarchar(255),aa)] = stuff((

    select ',' + convert(nvarchar(255),aa)

    from ForgeRock t

    where t.productName = ForgeRock.productName

    for xml path('')), 1, 1, '')

FROM

  ForgeRock

 group by productName

  • 孜云 孜云(提问者) 就是用的这个方法,但是我的值是123,456这样的格式的,就报错了
    2021-09-30 17:11 
  • Rose_Ruby Rose_Ruby 回复 孜云(提问者) 那你转换成字符串,我记得sql server可以查询的时候将字段值修改字段类型的
    2021-09-30 17:13 
  • 孜云 孜云(提问者) 回复 Rose_Ruby 转了,也不行,你看我上面的截图
    2021-09-30 17:18 
  • Rose_Ruby Rose_Ruby 回复 孜云(提问者) 觉得你的语句是有问题的,但我没电脑没sql server没法手敲个例子给你-.-||
    2021-09-30 17:19 
  • 孜云 孜云(提问者) 回复 Rose_Ruby 这就是值全是数值的时候有这个问题,如果有中文或者字母就可以查出来...心累
    2021-09-30 17:28 
  • 6关注人数
  • 596浏览人数
  • 最后回答于:2021-9-30 17:43
    请选择关闭问题的原因
    确定 取消
    返回顶部