我在MYSQL
中有一个名为permit_bills
的表,其中包含bill_no
,alcohol_typ
,origin
,2000ml
,{{ 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_date
和2000ml
的列。他们的1000ml
和`来源。
我的输出表必须是这样的:
alcohol_typ
答案 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