MySQL可以将列转换为行,根据行的需要动态添加任意多的列。我想我的问题可能与数据透视表有关,但我不确定,除了给出下面的例子之外,我不知道该如何组织这个问题。
给出两个表A和B,它们看起来像
表A
+--+-----+----+
|id|order|data|
+--+-----+----+
|1 |1 |P |
+--+-----+----+
|2 |2 |Q |
+--+-----+----+
|2 |1 |R |
+--+-----+----+
|1 |2 |S |
+--+-----+----+
我喜欢编写如下所示的查询:
结果表
+--+-----+-----+
|id|data1|data2|
+--+-----+-----+
|1 |P |S |
+--+-----+-----+
|2 |R |Q |
+--+-----+-----+
基本上,我希望将表B中的每一行转换为结果表中的一列。如果在表B中为id=1添加了一个新条目,那么我希望结果表自动扩展一列,以容纳这个额外的数据点。
发布于 2013-02-12 22:02:35
您需要使用MAX
和GROUP BY
来模拟枢轴:
SELECT Id,
MAX(CASE WHEN Order = 1 THEN data END) data1,
MAX(CASE WHEN Order = 2 THEN data END) data2
FROM TableA
GROUP BY Id
这是SQL Fiddle。
https://stackoverflow.com/questions/14834290
复制相似问题