当前位置: 首页 > article >正文

sql server 多行数据合并一行显示

在 SQL Server 中,可以使用 STUFF 和 FOR XML PATH 进行多行合并成一行。例如,假设有一个表名为 orders ,其中包含订单号和产品名称:

order_idproduct_name
1Product A
1Product B
2Product C
2Product D

以下查询将在 order_id 列上分组,将产品名称合并成一行:

SELECT order_id, STUFF((SELECT ', ' + product_name
                        FROM orders o2
                        WHERE o2.order_id = o1.order_id
                        FOR XML PATH('')), 1, 2, '') AS products
FROM orders o1
GROUP BY order_id

结果如下所示:

order_idproducts
1Product A, Product B
2Product C, Product D

在STUFF函数中,第一个参数指定要插入的位置,第二个参数指定要从第一个参数指定的位置开始删除的字符数,第三个参数指定要插入的新值。在此查询中,使用 FOR XML PATH 将每个产品名称转换为逗号分隔的字符串,然后使用 STUFF 将第一个逗号删除并将所有产品名称合并成一个字符串。最后,使用 GROUP BY 在 order_id 列的基础上进行分组。


http://www.kler.cn/a/133245.html

相关文章:

  • Spring Boot 中 Druid 连接池与多数据源切换的方法
  • 供应链管理、一件代发系统功能及源码分享 PHP+Mysql
  • Linux---常用shell脚本
  • 二分搜索的三种方法
  • 【Pikachu】任意文件上传实战
  • 华为云前台展示公网访问需要购买EIP,EIP流量走向
  • MyBatis学习
  • 麻将馆电脑计费系统,棋牌室怎么用电脑控制灯计时,佳易王计时计费系统软件下载
  • 浏览器里设置代理的作用
  • 【Linux】kernel与应用消息队列的一种设计
  • Redis篇---第七篇
  • DAC实验(DAC 输出三角波实验)(DAC 输出正弦波实验)
  • 机器人走迷宫问题
  • ubuntu18.04中代码迁移到20.04报错
  • 【数据结构】栈与队列的实现
  • webpack的安全保障是怎么做的?
  • Windows使用ssh远程连接(虚拟机)Linux(Ubuntu)的方法
  • 导航守卫有哪三种?
  • [msg_msg] corCTF2021 -- fire_of_salvation
  • vue中watch监听事件与计算属性的区别
  • Linux 环境删除Conda
  • 【网络奇遇记】我和因特网的初相遇2 —— 三种交换方式
  • DPAFNet:一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络
  • 表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
  • 如何检查 Docker 和 Kubernetes 是否可以访问外部网络,特别是用于拉取镜像的仓库?
  • 【软件安装】Centos系统中安装docker容器(华为云HECS云耀服务器)