我有以下表格:
TableA
ID | SomeInt
1 55
1 66
2 77
TableB
ID | OtherInt
1 ComputedBy Field
2 ComputedBy Field
按字段计算需要从tableA返回总和,其中TableB.ID = TableA.ID,但如果我说:
SELECT SUM(SomeInt) from TableA where ID = TableA.Id
其中第一个ID是当前表的ID,dbms表示“表Table1和Table2之间的不明确的字段名称”
那么,我如何从当前行获取ID,以便它不会混合字段名称。
像This.ID,Self.ID,CurrentRow.ID或sql使用的任何东西
编辑:显然我可以使用当前表的名称来引用列
答案 0 :(得分:3)
简单回答
select tb.id
,sum(ta.someint)
from TableA ta
inner join TableB tb
on ta.id = tb.id
group by tb.id
这是一个完整解决你的问题的例子,原因是tsql语法。
declare @TableA table(id int
,someint int)
insert @TableA values(1,55)
insert @TableA values(1,66)
insert @TableA values(2,77)
declare @TableB table(id int)
insert @TableB values(1)
select tb.id
,sum(ta.someint)
from @TableA ta
inner join @TableB tb
on ta.id = tb.id
group by tb.id
答案 1 :(得分:0)
SELECT B.ID, SUM(A.SomeInt) AS Total
From TableA A, TableB B where A.ID = B.Id
GROUP BY B.ID
答案 2 :(得分:0)
SELECT TableB.ID, SUM(TableA.SomeInt)
FROM TableB
LEFT OUTER JOIN TableA ON
TableB.ID = TableA.ID
GROUP BY TableB.ID
答案 3 :(得分:0)
您是否尝试使TableB具有TableA值的总和? ID已经存在(只需要更新),还是需要从头开始填充TableB?我不明白你的总体目标是什么,这会影响答案。
E.G。
让我知道你的目标是什么,我们可以得到一个理想的答案。
答案 4 :(得分:0)
您可能只是将"TableB"
本身设为计算视图:
CREATE VIEW TableB AS SELECT ID, SUM(SomeInt) AS OtherInt FROM TableA;
SELECT * FROM TableB;
id | otherint
----+----------
2 | 77
1 | 121
(2 rows)