如何使用来自列的不同值作为新表的列名来创建表?

如何使用来自列的不同值作为新表的列名来创建表?,第1张

如何使用来自列的不同值作为新表的列名来创建表?

使用

PIVOT
表运算符,然后使用
INTO
子句从数据透视表的列中创建新表。像这样的东西:

SELECt *INTO newtablenameFROM ( SELECt tag, value FROM tags) AS tPIVOT (  MIN(value)  FOR tag in ([tag1], [tag2], [tag3], [tag4])) AS p;

在此处查看其运行情况:

  • SQL小提琴演示

但是, 在这种情况下,您必须使用动态sql对表中的任意数量的标签动态地执行此 *** 作,而不是手动列出它们。像这样:

DECLARE @cols AS NVARCHAr(MAX);DECLARE @query AS NVARCHAr(MAX);select @cols = STUFF((SELECT distinct ',' +  QUOTENAME(tag)FROM tagsFOR XML PATH(''), TYPE          ).value('.', 'NVARCHAr(MAX)')   , 1, 1, '');SELECt @query = 'SELECT *      INTO newtablename      FROM ( SELECt tag, value FROM tags) AS t      PIVOT       (        MIN(value)        FOR tag in ( ' + @cols + ' )      ) AS p';execute(@query);

在此处查看其运行情况:

  • SQL小提琴演示

这将创建一个名称

newtablename
如下的全新表:

| TAG1 | TAG2 | TAG3 | TAG4 |-----------------------------|  123 |  854 |  923 |   44 |


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存