SQL 同一个字段多个值实现动态行转列

zw040608 2019-04-02 10:08:09


需求:SQL 同一个字段多个值实现动态行转列,各位大佬帮忙看一下,小弟感激不尽!!
...全文
683 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
I Can -Jiang 2019-11-05
  • 打赏
  • 举报
回复
SELECT * FROM ProductionSchedule

DECLARE @sqlWPName VARCHAR(8000)
SELECT @sqlWPName = STUFF((SELECT ','+'['+WPName+']' FROM( SELECT DISTINCT WPName FROM ProductionSchedule)T FOR XML PATH('') ),1,1,'')
DECLARE @sqlPivot VARCHAR(8000)
SELECT @sqlPivot = 'SELECT * FROM ProductionSchedule Pivot(MAX(ppProduceSendQty) FOR WPName IN('+@sqlWPName+')) T'
PRINT @sqlPivot
EXEC (@sqlPivot)
xzxmustwin 2019-04-03
  • 打赏
  • 举报
回复
https://bbs.csdn.net/topics/392504654
参考我之前提过的问题。列是动态不固定的,通过动态sql 并exec该动态sql即可。
我的博客里面也贴过类似源码
Dear SQL(燊) 2019-04-03
  • 打赏
  • 举报
回复
if object_id('tempdb..#list') is not null drop table #list;
select 产品编码='A',工序名称='检管',工时=10 into #list union all
select 产品编码='A',工序名称='去外毛',工时=9 union all
select 产品编码='A',工序名称='撕开',工时=10 union all
select 产品编码='A1',工序名称='撕开',工时=8 union all
select 产品编码='A1',工序名称='组装',工时=8 union all
select 产品编码='A2',工序名称='A1',工时=8 union all
select 产品编码='A3',工序名称='A2',工时=8 


declare @colname nvarchar(max)='',@sql nvarchar(max)

;
with list as(
	select distinct 工序名称
	from #list
)
select @colname=@colname+',['+工序名称+']'
from list
print @colname

set @sql='
select *
from #list pivot(max(工时) for 工序名称 in('+right(@colname,len(@colname)-1)+')) pt

'
exec(@sql)

/*
产品编码 A1          A2          检管          去外毛         撕开          组装
---- ----------- ----------- ----------- ----------- ----------- -----------
A    NULL        NULL        10          9           10          NULL
A1   NULL        NULL        NULL        NULL        8           8
A2   8           NULL        NULL        NULL        NULL        NULL
A3   NULL        8           NULL        NULL        NULL        NULL

*/
qq_25073223 2019-04-02
  • 打赏
  • 举报
回复
zw040608 2019-04-02
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
就一列吗?之前博客写过一些
https://blog.csdn.net/sinat_28984567/article/details/79865046


我这工序这一列是动态数据(每个产品的工序是不同的),我看你发的链接都是固定数据
二月十六 2019-04-02
  • 打赏
  • 举报
回复
就一列吗?之前博客写过一些 https://blog.csdn.net/sinat_28984567/article/details/79865046

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧