Sql server 2008 在SQL Server 2008中对两个表进行乘法运算

Sql server 2008 在SQL Server 2008中对两个表进行乘法运算,sql-server-2008,matrix-multiplication,Sql Server 2008,Matrix Multiplication,如果您有两个SQL表,并且将它们视为矩阵,那么两个矩阵A和B的乘积C定义为 c_ik = a_ij*b_jk 其中,j对i和k的所有可能值求和,上述符号使用爱因斯坦求和约定。在不存在显式求和符号的情况下,重复指数的隐含求和称为爱因斯坦求和,通常用于矩阵和张量分析。因此,为了定义矩阵乘法,矩阵的维数必须满足 所以 在哪里 比如说 a1 a2 a3 ---------- 14 9 4 2 11 5 0 12 17 5 2 3 b1 b2 --

如果您有两个SQL表,并且将它们视为矩阵,那么两个矩阵A和B的乘积C定义为

c_ik = a_ij*b_jk
其中,
j
i
k
的所有可能值求和,上述符号使用爱因斯坦求和约定。在不存在显式求和符号的情况下,重复指数的隐含求和称为爱因斯坦求和,通常用于矩阵和张量分析。因此,为了定义矩阵乘法,矩阵的维数必须满足

所以

在哪里

比如说

a1  a2  a3
----------
14   9   4 
2   11   5 
0   12  17
5    2   3


b1   b2 
-------
12   25
 9   10
 8    5
等于

c1     c2 
---------
273   455
243   235
244   205
102   160
我在想做一个While循环,但我想有一个更好的方法 可能使用pivot或带有i,j,k坐标的CTE

DECLARE @count int
DECLARE @max int

SET @count int = 1
SET @max = 4

WHILE @count < @max
BEGIN
   INSERT INTO C_Table (c1, c2)
  --Do not know how to make the other products or how to get them...
   Select Sum(   (T1.Value * T2.Value)   ) 
    From A As T1
    Join B As T2
    ...
   SET @count = @count + 1
END
DECLARE@count int
声明@max int
设置@count int=1
设置@max=4
而@count<@max
开始
插入C_表(c1、c2)
--不知道如何制造其他产品或如何获得它们。。。
选择总和((T1.Value*T2.Value))
从A到T1
加入B为T2
...
设置@count=@count+1
终止

我在这里有点迷茫…

TSQl绝对不是为矩阵相乘而设计的!!但这能做到吗?我想这是可能的,但不知道怎么做只是因为有些事情可以做,并不意味着它应该做。您最好编写一个CLR存储过程。