【发布时间】:2015-04-26 19:22:17
【问题描述】:
我在 MySQL 中有一个这样的表:
PersonID id X
1 1 0
1 2 1
1 3 1
1 4 1
2 1 1
2 2 0
2 3 0
2 4 1
3 1 1
3 2 0
等等。 X 是二进制的 - 1 或 0。假设它是随机的。
我想得到这样的查询结果:
PersonID X1 X2 X3 X4
1 0 1 1 1
2 1 0 0 1
3 1 0 NULL NULL
我该怎么做?我尝试了以下方法:
select
PersonID,
case when id = 1 then X else NULL end as X1,
case when id = 2 then X else NULL end as X2,
et cetera
from table
group by PersonID
这显然是错误的,而且要花很长时间才能写出来(因为我每个人都有多达 700 个不同的 id),但这是我能想到的最好的了。
【问题讨论】:
-
所以你可能有 700 个不同的 id
1,2,3...700? -
是的。以及 700 个不同的列。不幸的是,笨拙但必要
-
在这种情况下,您将需要使用动态 sql 来生成数据透视表。检查 mysql 动态枢轴并确保您的列号不超过 4096
-
数据展示问题在应用层/表现层代码解决