繁体   English   中英

将多行 MySQL 合并为一行

[英]Combine multiple MySQL rows into one row

这是我目前从我的查询中得到的:

行号 展望 热的 合同
1 null null
1 约翰 null null
1 null null 山姆

我想得到:

行号 展望 热的 合同
1 约翰 山姆

我不能使用连接,因为我仍然需要单独的列

这是我到目前为止所拥有的...
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=e7aab240b40e40955bac44f616d7f3d7

请注意:最终会有 7 列,但行数会有所不同(即潜在客户列可能有 20 条记录,而合同列可能只有 4 或 5 条记录。

您可以使用条件聚合来做到这一点:

WITH CTE_tbl AS
(
  SELECT lead_type,firstname, last_date,
         ROW_NUMBER() OVER(PARTITION BY lead_type order by lead_type Desc) as row_no
  FROM leads
) 
SELECT row_no,
       MAX(case when  lead_type = 'prospect' then firstname end) prospect,
       MAX(case when  lead_type = 'hot' then firstname end) hot,
       MAX(case when  lead_type = 'contract' then firstname end) contract
FROM CTE_tbl
GROUP BY row_no
ORDER BY row_no

演示
结果:

行号 展望 热的 合同
1 约翰 山姆
2 马里奥 秋天 null
3 坦率 null null
4 玛丽 null null
5 史蒂夫 null null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM