SQLSERVER 行转列

有如下表SUBJECT(含ID,NAME列)


想得到1,2,3,4,5这样的数据,可以用如下SQL

select ','+CAST(ID AS VARCHAR) from subject for xml path('')

将第一个','去掉即可,可以使用如下SQL

SELECT stuff((select ','+CAST(ID AS VARCHAR)  from subject for xml path('')),1,1,'') ids

结果如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server中,行转列是一种将表中的行数据转换为列数据的操作。根据提供的引用内容,我们可以使用PIVOT函数来实现行转列操作。首先,创建一个临时表#USER,并插入一些数据。然后使用PIVOT函数将科目列转换为新的列名,并将分数作为对应列的值。最后,使用GROUP BY语句按照姓名进行分组,并使用MAX函数获取每个科目的最大值。下面是一个示例的行转列SQL查询语句: CREATE TABLE #USER ( name NVARCHAR(100), 科目 NVARCHAR(100), 分数 DECIMAL(18,2) ) INSERT INTO #USER (name, 科目, 分数) VALUES ('张三', '语文', 100), ('张三', '英语', 80), ('张三', '数学', 60), ('张三', '物理', 70) SELECT newtemp.name, MAX(newtemp.语文) 语文, MAX(newtemp.英语) 英语, MAX(newtemp.数学) 数学, MAX(newtemp.物理) 物理 FROM #USER s PIVOT ( MAX(分数) FOR 科目 IN (语文, 英语, 数学, 物理) ) AS newtemp GROUP BY newtemp.name 这样的处理方法有助于简化前后端的处理,直接查询转换后的固定列和实体即可,无需再编写大量的特殊处理方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SQL Server 行转列](https://blog.csdn.net/qq_45619623/article/details/126529707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值