首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将软件的转位或不枢轴列转换为两列

将软件的转位或不枢轴列转换为两列
EN

Stack Overflow用户
提问于 2013-09-04 18:22:07
回答 1查看 1.7K关注 0票数 0

我有一个SQL 2008表,其中包含了每台计算机的一行,其中包含了多列软件标题:

代码语言:javascript
复制
Computer      Col1        Col2        Col3          Col4
PC1           Acrobat     Word        Excel
PC2           Word        Access      
PC3           Google
PC4           Word        Excel       SQL2008       Maximizer

我想把它合并成这样的两列:

代码语言:javascript
复制
Computer        Software
PC1             Acrobat
PC1             Word
PC1             Excel
PC2             Word
PC2             Access
PC3             Google
PC4             Word
PC4             Excel
PC4             SQL2008
PC4             Maximizer

它不是列的集合,所以卸载或转置工作吗?

每一行有1到32列的数据。软件名称有数百个不同的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-04 18:27:02

您可以通过几种不同的方式解除数据的枢轴,包括unpivot函数或交叉应用,以将多列转换为行。

UNPIVOT

代码语言:javascript
复制
select computer, software
from yourtable
unpivot
(
  software 
  for col in ([Col1], [Col2], [Col3], [Col4])
) un;

与Demo

交叉应用:

代码语言:javascript
复制
select t.computer, c.software
from yourtable t
cross apply
(
  select col1 union all
  select col2 union all
  select col3 union all
  select col4
) c (software)
where c.software is not null;

与Demo。还可以根据Server的版本使用交叉应用和值:

代码语言:javascript
复制
select t.computer, c.software
from yourtable t
cross apply
(
  values
    (col1), (col2),
    (col3), (col4)
) c (software)
where c.software is not null;

请参阅与Demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18621112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档