情况就是这样 表a cola1 cola2
表b对于cola2 = colb1和colb4 = colc12的每个值,获取colb2
对于cola2 = colb1和colb5 = colc3的每个值,fetch colb3
为每个可乐2计算(colb3-colb2)* size * factor1 计算每个cola2的SUM((colb3-colb2)* size * factor1) 计算每个cola2的AVG((colb3-colb2)* size * factor1)
(colb3-colb2)* size * factor1的值也需要存储在表中以进行其他计算。我尝试使用多语句表值用户定义函数。但是无法在同一个表中返回聚合值和单个值。如何在同一个连接查询中使用多个UDF?我还可以使用其他任何功能吗?
示例数据:
表a
id1 prod1
表b
id1 datefrom dateto id1 id2
id2 datefrom dateto id3 id4
表c
id1日期价格
id2日期价格
id3日期价格
id4日期价格
表b(id1)匹配表c(id1)
表b(id2)匹配表c(id2)
我需要从表c中获取表b中两个ID的价格,这样我就可以减去这些值并找到结果的总和。 感谢任何帮助。
答案 0 :(得分:0)
为什么不能在简单的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中只是要求维护噩梦。