0

我有一个查询,它分为三层。也就是说,我有一个主查询,里面有一个标量子查询,里面也有一个标量子查询。

底层标量查询返回两个不同的值,中级子查询返回两个的平均值。但是,底层查询不是接收当前值,而是平均表中的所有值。

有谁知道如何正确地将当前顶级查询结果的值传递给底部子查询?

代码示例:

Select Product, 
       Description, 
       (Select Avg(Mfg_Cost, Purchasing_Cost) 
        FROM (Select Mfg_Cost, 
                     Purchasing Cost
              From Cost
              Where Cost.Product = Products.Product)) 
From Products;
4

1 回答 1

0

你不能只使用 JOIN 和 GROUP BY,像这样:

Select p.Product, 
       p.Description, 
       Avg(c.Mfg_Cost),
       Avg(c.Purchasing_Cost)
From Products p 
    INNER JOIN
              Cost c
              ON c.Product = p.Product
GROUP BY p.Product, p.Description;

一般来说,如果您需要从子查询中返回多个值:

Select p.Product, 
       p.Description,
       q2.AvgMfg_Cost,
       q2.AvgPurchasing_Cost
From Products p INNER JOIN
  (
       Select c.Product, 
              Avg(c.Mfg_Cost) AS AvgMfg_Cost, 
              Avg(c.Purchasing_Cost) AS AvgPurchasing_Cost
              From Cost c
              Group by c.Product
  ) AS q2
  on q2.Product = p.Product;

在 Microsoft SQL Server 中,您还可以使用公用表表达式 (CTE)

于 2012-04-09T13:52:35.370 回答