Sql 为多个表取消Pivot表
我在打开桌子时遇到了一个问题 我的桌子结构是Sql 为多个表取消Pivot表,sql,sql-server,Sql,Sql Server,我在打开桌子时遇到了一个问题 我的桌子结构是 code level1名称level1邮件level2名称level2邮件Level3名称Level3电子邮件 1 aaaa@b.combbbb@b.com复写的副本cc@c.com 我需要将这些列转换成行,并需要如下输出 代码信息级别1级别2级别3 1名aa bb cc 1封电子邮件aa@b.com bb@b.com cc@c.com 我会使用apply select t.code, v.* from t cross appl
code level1名称level1邮件level2名称level2邮件Level3名称Level3电子邮件
1 aaaa@b.combbbb@b.com复写的副本cc@c.com
我需要将这些列转换成行,并需要如下输出
代码信息级别1级别2级别3
1名aa bb cc
1封电子邮件aa@b.com bb@b.com cc@c.com
我会使用apply
select t.code, v.*
from t cross apply
(values ('Name', t.Level1Name, t.Level2Name, t.Level1Name, Level3Name),
('Email', t.Level1Email, t.Level1Email, t.Level2Email, Level3Email)
) v(info, level1, level2, level3);
这回答了你的问题吗。你试过什么?为什么不起作用?如果您不理解语法,那么它是什么呢?我在上面的场景中使用了这段代码。它适用于一个级别,但当我尝试另一个级别时,它不起作用。并且名称要与表Unpivot中的2个级别select code,Info,Level1相同(级别1表示(级别1名称,级别1邮件)UNION中的Info)UnPvt select code,Info,Level2表示表Unpivot中的Info(级别2表示(级别2名称,级别2邮件))的名称相同(级别1表示您在问题中的尝试,不是评论。使用该功能。你能帮助我使用该功能吗?单击超链接,然后使用“复制和粘贴”功能将您的尝试放在代码栏(
`
)内。它工作正常。。多谢各位