Sql server 2008 对每行进行复杂计算的SQL Server查询

Sql server 2008 对每行进行复杂计算的SQL Server查询,sql-server-2008,user-defined-functions,Sql Server 2008,User Defined Functions,情况就是这样。 表a cola1 cola2 表b colb1 colb2 colb3 colb4 colb5 表c colc1 colc2 colc3 对于cola2=colb1和colb4=colc12的每个值,获取colb2 对于cola2=colb1和colb5=colc3的每个值,获取colb3 计算每个cola2的colb3-colb2*大小*因子1。 计算每个cola2的SUMcolb3-colb2*尺寸*系数1 计算每个cola2的AVGcolb3-colb2*尺寸*系数1 co

情况就是这样。 表a cola1 cola2

表b colb1 colb2 colb3 colb4 colb5

表c colc1 colc2 colc3

对于cola2=colb1和colb4=colc12的每个值,获取colb2 对于cola2=colb1和colb5=colc3的每个值,获取colb3

计算每个cola2的colb3-colb2*大小*因子1。 计算每个cola2的SUMcolb3-colb2*尺寸*系数1 计算每个cola2的AVGcolb3-colb2*尺寸*系数1

colb3-colb2*size*factor1的值也需要存储在表中,以便进行其他计算。我尝试使用多语句表值用户定义函数。但无法在同一个表中同时返回聚合值和单个值。如何在同一个联接查询中使用多个UDF?还有其他功能我可以使用吗

样本数据: 表a id1产品1 表b id1 datefrom dateto id1 id2 id2 datefrom dateto id3 id4 表c id1日期价格 id2日期价格 id3日期价格 id4日期价格 表bid1与表cid1匹配 表bid2与表cid2匹配

我需要从表c中获取表b中两个ID的价格,这样我就可以减去这些值并找到结果的总和。
谢谢你的帮助

为什么不能在简单的SQL语句中执行?我看这里没有什么太难的

select cola2, 
CASE WHEN cola2 = colb1 AND colb4 = colc12 THEN colb2 ELSE NULL END as Calculation1, 
CASE WHEN cola2 = colb1 AND colb5 = colc3 THEN colb3 ELSE NULL END AS Calculation2,
 (colb3 - colb2) * size * factor1 as Calculation3, <...>
INTO #intermediate
FROM tablea 
INNER JOIN tableb ON <...>
INNER JOIN tablec ON <...>

SELECT SUM(Calculation3) as SumCalculation3, AVG(Calculation3) as AvgCalculation3
FROM #intermediate

当然,除非。。。你的问题中还有你遗漏的其他部分。但一般来说,使用中间表是可以的,而且通常是处理这类复杂计算的最快方法。试图将所有内容组合到一个SQL SELECT中只会让维护陷入噩梦。

您缺少一些基本信息。首先,表c是如何连接到其他表的?表bcolb4,colb5与表c colc2,COLC3有外键关系。我觉得你的想法很有用。如果在colb4=colc12上连接表b和表c,在colb5=colc2上连接fetch colb3,在colb5=colc2上连接fetch colb3,我将如何分配condition子句?