我在oracle db中有一个表,它包含三个字段(name,id,count)。 Id范围从1到4都包括。
例如,表中的数据类似于以下
+----+--+-----+
|Name|Id|Count|
+----+--+-----+
|A |2 |5 |
+----+--+-----+
|A |3 |15 |
+----+--+-----+
|B |1 |10 |
+----+--+-----+
|B |2 |12 |
+----+--+-----+
|B |4 |6 |
+----+--+-----+
现在我的问题是使表格如下,如头部分中的名称和ID以及它们在相应位置的计数。
上面示例表的结果如下所示。
+----+------+------+------+------+
|Name|Id(=1)|Id(=2)|Id(=3)|Id(=4)|
+----+------+------+------+------+
|A |0 |5 |15 |0 |
+----+------+------+------+------+
|B |10 |12 |0 |6 |
+----+------+------+------+------+
我很震惊。有可能吗? 请帮帮我。
感谢你的帮助。
提前谢谢。
答案 0 :(得分:1)
您需要透视隔离。您可以在语句中使用case when ..
。
select
name,
case `id`
when 1 then `count` else 0 end as 'id=1',
case `id`
when 2 then `count` else 0 end as 'id=2',
...
from my_table
您还可以使用if(...
功能:
select
name,
if(`id`=1, `id`, 0 ) as 'id=1',
if(`id`=2, `id`, 0 ) as 'id=2',
...
from my_table