0

私はSQLが初めてです。SQL関数を使用して算術演算を実行しようとしています。

私は3つのテーブルを持っています:

表1

Table1_ID
Table2_ID
Value 

表2

Table2_ID
Switch

表3

Table3_ID
Table1_ID
Table2_ID
X_Column

まず、表 3 の X_Column の内容を入力として取得します。これが関数への入力になります。条件は次のとおりです。

1) 複数の Table2_ID に同じ X_Column 入力を指定できますが、その逆はできません

2) 複数の Table1_ID が同じ Table2_ID を持つことができ、その逆はありません

3) すべての X_Column 入力には、1 つ以上の Table2_ID があります。すべての Table2_ID には 1 つ以上の Table1_ID があります

私がしたいのは、特定の入力 X_Column が入力されるたびに、Table1_ID、対応する Table2_ID、入力 X_Column に対応する対応する Table3_ID を持つ Table1 からフィールドValueの内容を乗算して返すことだけです。

これを行う方法を理解できません。結合またはビューを使用して可能だと思います。ここに投稿する関連コードはまだありません。誰か助けてくれませんか?

4

1 に答える 1

0

私は列のデータ型を推測しています...

Table2_ID列を介してテーブルを結合します。異なるテーブルの行を結合すると、次のように列を乗算できます: Table1.Value * Table3.X_Column

-- sample tables
declare @Table1 table (Table1_ID int, Table2_ID int, Value numeric(18,2));
declare @Table2 table (Table2_ID int, Switch bit);
declare @Table3 table (Table3_ID int, Table1_ID int, Table2_ID int, X_Column numeric(18,2));

-- sample data
insert @Table1 values(100, 200, 5.00);
insert @Table1 values(100, 201, 10.00);
insert @Table2 values(200, 0);
insert @Table2 values(201, 1);
insert @Table3 values(300, 100, 200, 2.0);
insert @Table3 values(300, 100, 201, 2.5);

declare @X_Column numeric(18,2);
set @X_Column = 2.0;

select
    t1.Value * t3.X_Column
from @Table1 t1
join @Table2 t2 on t2.Table2_ID = t1.Table2_ID
join @Table3 t3 on t3.Table2_ID = t2.Table2_ID
where t3.X_Column = @X_Column
于 2012-06-11T16:21:46.760 に答える