请教高手如何把table1转换成table2

班长老六哥 2017-09-14 03:54:37

table1里面有几千个这个样的组要转换求高手帮忙
...全文
216 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2017-09-14
  • 打赏
  • 举报
回复

--测试数据
IF OBJECT_ID ('TempDB..#tab') IS NOT NULL
DROP TABLE #tab
CREATE TABLE #tab(
dt DATETIME,
tagname VARCHAR(50),
pv int	
)
INSERT INTO #tab 
SELECT GETDATE(),'bbuilding1\unit3\id803',30228
UNION ALL
SELECT GETDATE(),'bbuilding1\unit3\t803',0
UNION ALL
SELECT GETDATE(),'bbuilding1\unit3\tsp803',19
UNION ALL
SELECT GETDATE(),'bbuilding1\unit3\te803',4099
UNION ALL
SELECT GETDATE(),'bbuilding1\unit3\tc803',41
UNION ALL
SELECT GETDATE(),'bbuilding1\unit3\tp803',5
--测试数据结束

DECLARE @name     VARCHAR(MAX),
        @sql      VARCHAR(MAX)
SET @name = STUFF(
        (
            SELECT DISTINCT ',[' + LEFT(
                       RIGHT(tagname, CHARINDEX('\', REVERSE(tagname)) -1),
                       LEN(RIGHT(tagname, CHARINDEX('\', REVERSE(tagname)) -1)) -
                       3
                   ) + ']'
            FROM   #tab FOR XML PATH('')
        ),
        1,
        1,
        ''
    )
SET @sql = 
    'with cte as (SELECT dt,pv,left(tagname,len(tagname)-len(right(tagname, charindex(''\'',reverse(tagname))-1)))+RIGHT(tagname,3) as newtabname,left(right(tagname, charindex(''\'',reverse(tagname))-1),LEN(right(tagname, charindex(''\'',reverse(tagname))-1))-3) AS title FROM #tab)'

SET @sql = @sql + 'SELECT * from cte pivot( max(pv) for title in(' + @name + 
    '))a'
--PRINT @sql
EXEC (@sql)


dt                      newtabname                                               id          t           tc          te          tp          tsp
----------------------- -------------------------------------------------------- ----------- ----------- ----------- ----------- ----------- -----------
2017-09-14 17:07:41.717 bbuilding1\unit3\803                                     30228       0           41          4099        5           19

(1 行受影响)
班长老六哥 2017-09-14
  • 打赏
  • 举报
回复
引用 1 楼 z10843087 的回复:
[quote=引用 楼主 zk12668 的回复:] table1里面有几千个这个样的组要转换求高手帮忙
什么数据库啊[/quote] sqlserver2008
繁花尽流年 2017-09-14
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/392263643 参考下大同小异
OwenZeng_DBA 2017-09-14
  • 打赏
  • 举报
回复
引用 楼主 zk12668 的回复:
table1里面有几千个这个样的组要转换求高手帮忙
什么数据库啊

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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