2

我有以下表格:

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 使用的东西

编辑:显然我可以使用当前表的名称来引用该列

4

5 回答 5

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
于 2009-08-17T21:05:39.843 回答
0
SELECT B.ID, SUM(A.SomeInt) AS Total 
From TableA A, TableB B where A.ID = B.Id
GROUP BY B.ID
于 2009-08-17T20:59:56.113 回答
0

 SELECT TableB.ID, SUM(TableA.SomeInt) 
    FROM TableB 
        LEFT OUTER JOIN TableA ON
            TableB.ID = TableA.ID
    GROUP BY TableB.ID

于 2009-08-17T21:09:11.023 回答
0

您是否试图使 TableB 具有 TableA 值的总和?ID 是否已经存在(只需要更新)还是需要从头开始填充 TableB?我不明白你的总体目标是什么,这会影响答案。

例如

  • 通过分组更新
  • 插入
  • 根据对 tableA 的更改更新 TableB 的触发器
  • 简单的选择...

让我知道你的目标是什么,我们可以得到一个理想的答案。

于 2009-08-17T21:19:23.263 回答
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)
于 2009-08-17T21:34:40.723 回答