2009-08-17 1 views
1

私は以下の表を持っている:リファレンス現在の行

TableA 

ID | SomeInt 
1  55 
1  66 
2  77 

TableB 

ID | OtherInt 
1 ComputedBy Field 
2 ComputedBy Field 

フィールドによって計算がどこTableB.ID = TableA.IDにtableAから合計を返す必要がありますが、私が言う場合:

SELECT SUM(SomeInt) from TableA where ID = TableA.Id 

最初のIDは現在のテーブルのID、dbmsは「テーブルTable1とテーブル2の間のあいまいなフィールド名」と言います

したがって、フィールド名を混在させないように現在の行からどのようにIDを取得しますか? This.ID、Self.ID、CurrentRow.IDまたは

EDITを使用していますどんなSQLのような

何か:どうやら私は列

答えて

3

単純な答え

を参照するために現在のテーブルの名前を使用することができます
select tb.id 
     ,sum(ta.someint) 
    from TableA ta 
     inner join TableB tb 
       on ta.id = tb.id 
group by tb.id 

これは、あなたの問題excuse 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 
0
SELECT B.ID, SUM(A.SomeInt) AS Total 
From TableA A, TableB B where A.ID = B.Id 
GROUP BY B.ID 
+0

-1 A、Bのためには、構文 –

+0

@Joelに参加:私は助けることは笑うことができませんでした。私は落としていませんが、どうして私は-1を得なければならないと思いますか?その構文はDB間で互換性がありませんか? – shahkalpesh

0

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

0

あなたはTableBのは、テーブルAの値の合計を持ってしようとしていますか? IDはすでに存在していますか(更新する必要があります)、またはTableBを一から作成する必要がありますか?あなたの全体的な目標が何であるか分かりませんし、それが答えに影響します。

E.G.

は私はあなたの目標が何であるかを知ってみましょう

  • アップデートを選択
  • シンプルにtableAへ 変更に基づいてTableBのを更新
  • 挿入
  • トリガによって/グループのw ...と私たちは理想的な答えを得ることができます。あなたは、単に"TableB"自体計算されたビューになるかもしれない

0

CREATE VIEW TableB AS SELECT ID, SUM(SomeInt) AS OtherInt FROM TableA; 

SELECT * FROM TableB; 
id | otherint 
----+---------- 
    2 |  77 
    1 |  121 
(2 rows) 
関連する問題