SQL组合不同表中总计的列
表1(身份证、州) 表2(ID、成本) *唯一标识符=ID 我们所拥有的SQL组合不同表中总计的列,sql,database,join,group-by,sum,Sql,Database,Join,Group By,Sum,表1(身份证、州) 表2(ID、成本) *唯一标识符=ID 我们所拥有的 Select ID, State, Cost From Table 1 A Left Join Table 2 B On b.ID = a.ID ID State Cost A1 WA 100 B1 OR 175 C1 NV 115 A1 TX 75 B1 OR 125 我们想要什么 ID Total A1 175 B1 300 C1 115 我希望合
Select ID, State, Cost
From Table 1 A
Left Join Table 2 B On b.ID = a.ID
ID State Cost
A1 WA 100
B1 OR 175
C1 NV 115
A1 TX 75
B1 OR 125
我们想要什么
ID Total
A1 175
B1 300
C1 115
我希望合并来自单独表的列
因此,我们试图做的是计算任何特定ID的任何和所有状态的总计。正如您可以看到的,状态和成本列来自不同的表。据我所知,这不仅仅是一个简单的求和查询,它需要某种嵌套,但我不确定如何。。。表可以在ID上联接。对于此数据集,您可以简单地聚合
表2
,因为它包含您需要的两列(即ID
和成本
)
如果要排除表1中不存在的id
:
select id, sum(cost) total
from table2 t2
where exists (select 1 from table1 t1 where t1.id = t2.id)
group by id
你说了“我们”想要什么,但你(复数?)在问什么?你试过什么?为什么一个“简单的”SUM
不起作用,而这看起来正是有效的。似曾相识。请看:另外,(哎呀,忘了提)您标记了两个非常不同的RDBMS;MySQL和SQL Server。您真正使用的是什么RDBMS。我可以删除冲突的标记,请返回正确的标记。嵌套的“选择1”部分中的“1”代表什么?@shade206:它是存在
条件的子查询。由于我们只想知道是否存在满足条件的行,因此子查询的结果将被丢弃,因此选择1
。
select id, sum(cost) total
from table2 t2
where exists (select 1 from table1 t1 where t1.id = t2.id)
group by id