【发布时间】:2011-07-02 16:43:58
【问题描述】:
我有两张桌子 A 和 B;
Table A:
Cust_ID, Col_A, Col_B
1001, 1, 2
1002, 3, 4
1003, 2, 1
1004, 4, 3
Table B:
Col_A_Weight, Col_B_Weight
0.1111111, 0.22222
我要做的是使用 T-SQL 创建一个新的表 C,其中
Output = Col_A*Col_A_Weight + Col_B*Col_B_Weight
表 C:
Cust_ID, Output
1001, 1*0.1111111 + 2*0.22222
1002, 3*0.1111111 + 4*0.22222
1003, 2*0.1111111 + 1*0.22222
1004, 4*0.1111111 + 3*0.22222
所以最终的表 C 是
Cust_ID Output
1001, 0.5555511
1002, 1.2222133
1003, 0.4444422
1004, 1.1111044
鉴于有 200 个 Col_A、Col_B、Col_C、Col_D 等和相应的权重列,如何使用巧妙的连接以便动态引用这些列(假设它们在两个表中对应)。由于表 B 没有 Cust_ID 字段,这使得它有点棘手。
如何做到这一点?
【问题讨论】:
-
表B是不是只有一行?
-
@anivas:是的,表 B 将只包含一行。
-
为什么要“巧妙连接”以便“动态引用”列 - 这样您就不必输入列名?是不是因为您会不断将 Col_n 列添加到 A 并将相应的 Col_n_Weight 列添加到 B?
-
是的,还有另一个应用程序会不时更改列数。这就是为什么我需要一个“聪明的加入”。
标签: sql sql-server sql-server-2005 sql-server-2008 join