将一列数据显示为两列

时间:2012-07-31 07:17:30

标签: mysql sql

表A

| SLNO | TYPENAME | TYPEMODE |
------------------------------
|    1 |  Act.Alw |        A |
|    2 |  Canteen |        D |

我想根据其typmode显示两列

使用UNION ALL我得到

| Addition | Deduction |
------------------------
| Act.Alw  |           |
|          |  Canteen  |

我希望这样显示。添加和扣除是别名

| ADDITION | DEDUCTION |
------------------------
|  Act.Alw |   Canteen |

2 个答案:

答案 0 :(得分:0)

看起来您需要使用联接而不是联合。但是如果你能解释一下你想要完成什么,并且可能发布你正在尝试运行的SQL查询,那将会很有帮助。

答案 1 :(得分:0)

您可以使用CASE语句。要对它们进行分组,您需要使用GROUP_CONCAT函数,如下所示:

SELECT GROUP_CONCAT(CASE WHEN typemode = 'A' 
             THEN typename ELSE NULL END) AS Addition
      ,GROUP_CONCAT(CASE WHEN typemode = 'D' 
              THEN typename ELSE NULL END) AS Deduction
FROM Table1

输出:

| ADDITION | DEDUCTION |
------------------------
|  Act.Alw |   Canteen |

See this SQLFiddle