首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轴心百万级记录

轴心百万级记录
EN

Stack Overflow用户
提问于 2013-05-09 00:32:56
回答 1查看 154关注 0票数 3

我有一个包含4列和超过1亿条记录的表。表格设计:

代码语言:javascript
复制
ID char(12) PK 
Type Char(2) PK (Values 1,2,3)
DCID varchar(10) Null
IND Varchar(2) Null (Values Y, N)

这需要像这样旋转

代码语言:javascript
复制
ID, DCID1, DCID2, DCID3, IND1, IND2, IND3

如果类型的值为1,则在透视表中,DCID1应具有值,或者,如果类型为2,则DCID2应具有值,依此类推。同样,相应的IND也需要放在IND1IND2IND3中。

如何将其转化为轴心?

EN

回答 1

Stack Overflow用户

发布于 2013-05-09 00:41:50

我的建议是同时使用UNPIVOT和PIVOT函数来获得结果。

UNPIVOT将用于将DCIIND多列转换为单列中的多行。一旦完成,您就可以将数据旋转回列中。

UNPIVOT代码将类似于:

代码语言:javascript
复制
select id,
  col +type as new_col,
  value
from
(
  select id,
    type, 
    dcid, 
    cast(ind as varchar(10)) ind
  from yt
) d
unpivot
(
  value
  for col in (DCID, IND)
) unpiv;

参见SQL Fiddle with Demo。这会给出一个结果:

代码语言:javascript
复制
|           ID | NEW_COL | VALUE |
----------------------------------
| 1            |  dcid1  |  test |
| 1            |   ind1  |     Y |
| 2            |  dcid2  |   est |
| 2            |   ind2  |     Y |

new_col包含DCIDIND名称,并将type值连接到末尾。这个新值将是您应用轴心点的对象:

代码语言:javascript
复制
select id, DCID1, DCID2, DCID3, IND1, IND2, IND3
from
(
  select id,
    col +type as new_col,
    value
  from
  (
    select id,
      type, 
      dcid, 
      cast(ind as varchar(10)) ind
    from yt
  ) d
  unpivot
  (
    value
    for col in (DCID, IND)
  ) unpiv
) src
pivot
(
  max(value)
  for new_col in (DCID1, DCID2, DCID3, IND1, IND2, IND3)
) piv;

参见SQL Fiddle with Demo。结果将是:

代码语言:javascript
复制
|           ID | DCID1 | DCID2 | DCID3 | IND1 | IND2 | IND3 |
-------------------------------------------------------------
| 1            |  test |       |       |    Y |      |      |
| 2            |       |   est |       |      |    Y |      |
| 3            |       |       |  blah |      |      |    Y |
| 4            |   yes |       |       |    N |      |      |
| 5            |       |    hs |       |      |    N |      |
| 6            |       |       |    jr |      |      |    N |
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16445723

复制
相关文章

相似问题

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