经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SQL两列数据,行转列
来源:cnblogs  作者:Venomm  时间:2019/4/23 8:45:52  对本文有异议

SQL中只有两列数据(字段1,字段2),将其相同字段1的行转列

转换前:

转换后:

 

  1. --测试数据
  2. if not object_id(N'Tempdb..#T') is null
  3. drop table #T
  4. Go
  5. Create table #T([MDF_LOT_NO] int,[ERP_MODE_CD] int)
  6. Insert #T
  7. select 1017111,5 union all
  8. select 1017111,41 union all
  9. select 1128011,41 union all
  10. select 1128011,26
  11. Go
  12. --测试数据结束
  13. DECLARE @name VARCHAR(max),@sql VARCHAR(max)
  14. ;WITH cte AS (
  15. SELECT * ,
  16. ROW_NUMBER() OVER ( PARTITION BY MDF_LOT_NO ORDER BY GETDATE() ) AS rn
  17. FROM #T
  18. )
  19. SELECT @name =stuff((SELECT DISTINCT ',['+RTRIM(rn)+']' from cte for xml PATH('')),1,1,'')
  20. SET @sql =';WITH cte AS (
  21. SELECT * ,
  22. ROW_NUMBER() OVER ( PARTITION BY MDF_LOT_NO ORDER BY GETDATE() ) AS rn
  23. FROM #T
  24. )'
  25. set @sql =@sql+'SELECT * from cte pivot(max([ERP_MODE_CD])for rn in('+@name+'))a'
  26. PRINT @sql
  27. EXEC( @sql)

转自:https://bbs.csdn.net/topics/392320974

原文链接:http://www.cnblogs.com/Venomm/p/10750372.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号