Sql server 2008 在SQL Server 2008中对两个表进行乘法运算
如果您有两个SQL表,并且将它们视为矩阵,那么两个矩阵A和B的乘积C定义为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 --
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存储过程。