Sql 从两个表中计算值,其中一个表的标题中有键,另一个表的列值中有键

Sql 从两个表中计算值,其中一个表的标题中有键,另一个表的列值中有键,sql,postgresql,Sql,Postgresql,我有一个简单的问题,我不知道如何用sql解决 我有两张桌子, 费用: 第二表:收入 Party | sum ------+-------- A | 90 B | 12 C | 70 现在我想得到一个结果,用a、B、C各方的收入成本减去,然后求出净值。我无法将列标题与列值进行比较。我是个新手,所以我一直在努力。应该有非常简单的方法来做到这一点 我创建了“成本”表 SELECT sum(A) as A, sum(B) as B, sum(C) as C FROM

我有一个简单的问题,我不知道如何用sql解决

我有两张桌子, 费用:

第二表:收入

Party | sum
------+--------
  A   |  90
  B   |  12
  C   |  70
现在我想得到一个结果,用a、B、C各方的收入成本减去,然后求出净值。我无法将列标题与列值进行比较。我是个新手,所以我一直在努力。应该有非常简单的方法来做到这一点

我创建了“成本”表

 SELECT sum(A) as A, sum(B) as B, sum(C)  as C FROM mytable;
是否有一种聪明的方法可以用与收入表相同的格式创建此表,从而更易于比较?我将感谢您在这两方面提出的任何建议。非常感谢

您可以使用case进行比较:


应使用简化的大小写,例如:当“A”时的案例方,当“B”时的案例方,当“C”时的案例方,当“C”时的案例方,当“B”时的案例方,当“C”时的案例方,当“C”时的案例方END@Gordon这太棒了!它工作完美!我有一个问题。它是如何通过使用case自动获得行值的?案例给出了“a”或“b”或“c”列,但如果收入表中有超过1行,那么这将不起作用,是吗?对于我的另一个问题,关于如何为类似于从查询中转置的收入表行和列的成本创建类似的表,您有什么建议吗?非常感谢你的帮助!你让我开心@哈迪克。每行具有不同的party值。因此,每行只使用一个表达式。
 SELECT sum(A) as A, sum(B) as B, sum(C)  as C FROM mytable;
select party,
       cost - (case when party = 'a' then a
                    when party = 'b' then b
                    when party = 'c' then c
               else 0 end)
from cost c cross join
     income i