问题 1:检索单行数据
您可以使用 PIVOT 函数将数据转换为单行格式。以下查询修改了您之前实现此目的的尝试:
SELECT app_id, transaction_id, mobile_no, MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1, MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2, MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3, MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4, MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5 FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no;
此查询按 app_id、transaction_id 和 mobile_no 对行进行分组,并使用 MAX 函数检索每个 node_id 列的最大输入值,该值对应于到您想要显示的“Q”值。
问题 2:使用列值作为标题名称
要将 customer_attribute 列中的值用作标题名称,您可以将 CASE 语句与 AS 关键字结合使用。修改后的查询如下:
SELECT app_id, transaction_id, mobile_no, MAX(CASE WHEN node_id = 1 THEN entered_value END) AS CASE customer_attribute WHEN 'Q1' THEN entered_value END, MAX(CASE WHEN node_id = 2 THEN entered_value END) AS CASE customer_attribute WHEN 'Q2' THEN entered_value END, MAX(CASE WHEN node_id = 3 THEN entered_value END) AS CASE customer_attribute WHEN 'Q3' THEN entered_value END, MAX(CASE WHEN node_id = 4 THEN entered_value END) AS CASE customer_attribute WHEN 'Q4' THEN entered_value END, MAX(CASE WHEN node_id = 5 THEN entered_value END) AS CASE customer_attribute WHEN 'Q5' THEN entered_value END FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no;
在此查询中,在 MAX 函数中使用 CASE 语句来根据匹配的 customer_attribute 值选择 Entered_value。 AS 关键字将匹配的 customer_attribute 值分配为列标题。
以上是如何将 MySQL 数据转换为具有动态列标题的单行?的详细内容。更多信息请关注PHP中文网其他相关文章!