0

3つの層を持つクエリがあります。つまり、スカラーサブクエリを含むメインクエリがあり、スカラーサブクエリも含まれています。

最下位レベルのスカラークエリは2つの異なる値を返し、中間レベルのサブクエリは平均値を返します。ただし、最下位レベルのクエリが現在の値を受け取る代わりに、テーブル内のすべての値を平均化しています。

現在の最上位のクエリ結果の値を最下位のサブクエリに適切に渡す方法を知っている人はいますか?

コード例:

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とGROUPBYを使用することはできません。

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 に答える