mysql - SQL 根据匹配值将多行合并为单行

标签 mysql sql sum pivot aggregate-functions

我想要做的是合并几行数据以显示为一行。

从此:

<表类=“s-表”> <标题> 合约 ID 合约组 ID 金额 <正文> 140 189 90.00 140 190 85.00 140 191 300.00 151 190 10.00 152 189 200.00 152 191 50.00

对此:

<表类=“s-表”> <标题> 合约 ID 第 189 组 第 190 组 第 191 组 总金额 <正文> 140 90.00 85.00 300.00 475.00 151 00.00 10.00 00.00 10.00 152 200.00 00.00 50.00 50.00

非常欢迎任何建议。

谢谢。

最佳答案

您可以使用条件聚合:

select contractid,
    max(case when contractgroupid = 189 then amount else 0 end) as group_189,
    max(case when contractgroupid = 190 then amount else 0 end) as group_190,
    max(case when contractgroupid = 191 then amount else 0 end) as group_191,
    max(case when contractgroupid = 192 then amount else 0 end) as group_192,
    sum(amount) as total_amount
from mytable
group by contractid

如果同一组对于给定合约可能出现多次,您可能需要使用 sum() 而不是 max()

关于mysql - SQL 根据匹配值将多行合并为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65327538/

相关文章:

php mysql查询首字母!=[a-z]

sql - Oracle 10g Connect By Prior - 性能问题

google-sheets - 我想根据 google 表格中的其他两列值对第三列的值进行求和,并且 col1 和 col2 包含多个重复值

MySQL SUM() 与 COUNT() 在多列上

php - 自定义变量可以像 super 全局变量一样在每个页面上使用吗?

php - 在同一 ID 中插入重复的 key 更新

PHP 对象没有被创建

mysql - SQL查询获取2个日期之间每天的价格

sql - 你如何阅读 sqlite3 图表/流程图?

python - Pandas :某些列中的总和值