使用连接的SQL函数中的算法

时间:2012-06-11 15:40:12

标签: sql left-join

我是SQL新手。我正在尝试使用SQL函数执行一些算法。

我有三张桌子:

表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输入都有一个或多个Table2_ID;每个Table2_ID都有一个或多个Table1_IDs

我想要做的就是乘以并从Table1返回字段的内容,其中包含Table1_ID,相应的Table2_ID,对应的Table3_ID对应于输入X_Column,只要输入特定输入X_Column。

我无法理解如何做到这一点。我认为可以使用连接或视图。我还没有任何相关的代码在这里发布。有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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