我有一个如下所示的查询:
SELECT m.Name, (m.Value + NVL(a1.Value1, 0) + NVL(a2.Value2,0) + NVL(a3.Value3,0) "Value"
FROM m MainTable
LEFT JOIN Additional1 a1 ON (...)
LEFT JOIN Additional2 a2 ON (...)
LEFT JOIN Additional3 a3 ON (...)
WHERE (conditions on m)
ORDER BY 1;
这些查询为每个生成多行Name
。
我需要使用以下逻辑将每个行限制为一行:Name
包括 Value 最接近给定 Name 的平均值的行。
有些东西告诉我,CTE应该允许更紧凑的代码并希望实现更有效的实现,因此我不需要多次重复几乎相同的查询。
你能指出我正确的方向吗?