MYSQL - 在一行中选择多行

时间:2017-02-16 10:59:06

标签: mysql

我在MYSQL中有一个名为permit_bills的表,其中包含bill_noalcohol_typorigin2000ml,{{ 1}},1000ml。表如下所示:

bill_date

我想根据他们的 +---------+--------------+---------+--------+--------+-----------+ | bill_no | alcohol_typ | origin | 2000ml | 1000ml | bill_date | +---------+------------- + --------+--------+--------+-----------+ | 2001 | s | f | 2 | 1 |01-02-2017 | | 2001 | m | w | 3 | 4 |01-02-2017 | +---------+--------------+---------+--------+--------+-----------+ bill_no将上表中的所有行选为一行,并希望显示bill_date2000ml的列。他们的1000ml和`来源。

我的输出表必须是这样的:

alcohol_typ

2 个答案:

答案 0 :(得分:0)

尝试此(数据透视)查询 -

SELECT
  bill_no,
  MAX(IF(alcohol_typ = 's' AND origin = 'f', `2000ml`, NULL)) AS s_f_2000ml,
  MAX(IF(alcohol_typ = 's' AND origin = 'f', `1000ml`, NULL)) AS s_f_1000ml,
  MAX(IF(alcohol_typ = 'm' AND origin = 'w', `2000ml`, NULL)) AS m_w_2000ml,
  MAX(IF(alcohol_typ = 'm' AND origin = 'w', `1000ml`, NULL)) AS m_w_1000ml,
  bill_date
FROM permit_bills
  GROUP BY bill_no, bill_date

答案 1 :(得分:0)

您确定输出表需要看起来像那样吗?

您可以使用GROUP_CONCAT功能,这有时是一个非常有用的工具。您需要拆分或分解应用程序中的值,但可能只需要它。

https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat