如何在 SQL 中获取一行和三列(使用每个信使的成本总和)?

Posted

技术标签:

【中文标题】如何在 SQL 中获取一行和三列(使用每个信使的成本总和)?【英文标题】:How to get one line and Three colums in SQL (using the sum of costs for each menssenger)? 【发布时间】:2021-03-12 06:32:41 【问题描述】:

table screenshot

以下查询让我得到 3 行,但这不是我想要得到的,我想要得到 1 行和 3 列,你能帮我吗?

Select NoMess,
  case 
    when (NoMess = "1") Then (SELECT SUM (Port) from commande where NoMess = "1") 
    when (NoMess = "2") Then (SELECT SUM (Port) from commande where NoMess = "2") 
    when (NoMess = "3") Then (SELECT SUM (Port) from commande where NoMess = "3") 
  End as Port
From Commande 
Group by NoMess

【问题讨论】:

【参考方案1】:

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

SELECT
  SUM(CASE WHEN NoMess = '1' THEN Port ELSE 0 END) AS column1,
  SUM(CASE WHEN NoMess = '2' THEN Port ELSE 0 END) AS column2,
  SUM(CASE WHEN NoMess = '3' THEN Port ELSE 0 END) AS column3
FROM Commande

【讨论】:

以上是关于如何在 SQL 中获取一行和三列(使用每个信使的成本总和)?的主要内容,如果未能解决你的问题,请参考以下文章

如何每天为每个唯一标识符快速创建一行?

如何获取 SQL 中的第一个非 NULL 值?

每个 Int 扩展每一行的 SQL 查询。在 COL_A 和 COL_B 之间的范围内

如何在信使平台直播?

在SQL中,如何将两列的数据相乘以获得第三列

如何使用 Oracle SQL 仅获取单一类型