1

SQL Server 2005 を使用して、数量の計算フィールドを持つバンドルから子レコードを取得するクエリがあります。クエリは次のようになります。

SELECT  TblB_1.fooID, 
    TblC.quantity * (TblA.quantity) AS Quantity, 
    TblB_1.name AS Name
    FROM    TblB AS TblB_1 INNER JOIN
              TblC ON TblB_1.fooID = TblC.fooID RIGHT OUTER JOIN
              TblB INNER JOIN
                TblA ON TblB.fooID = TblA.fooID ON TblC.parentfooID = TblB.fooID
    WHERE   (TblB.isBundle = 1) AND (TblA.isDeleted = 0)

ID でグループ化し、数量フィールドの合計を取得できるようにする必要があります。私はこのような合計で数量行をラップしようとしました:

SUM(TblC.quantity * (TblA.quantity)) AS Quantity,

次に追加

GROUP BY TblB_1.fooID

WHERE句の後、しかし、それは「集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストでTblB_1.nameが無効です」というエラーが発生します。

また、このタスクにサブクエリを使用して頭を悩ませようとしましたが、それも機能させることができませんでした。また、ここまたは Web で、適応できた例を見つけることもできませんでした。ありがとう - ダン

4

1 に答える 1

1

あなたは近かったので、すべての非集計フィールドでグループ化する必要があります。そのようです

SELECT  TblB_1.fooID, 
    SUM(TblC.quantity * (TblA.quantity)) AS Quantity, 
    TblB_1.name AS Name
FROM    TblB AS TblB_1 INNER JOIN
          TblC ON TblB_1.fooID = TblC.fooID RIGHT OUTER JOIN
          TblB INNER JOIN
            TblA ON TblB.fooID = TblA.fooID ON TblC.parentfooID = TblB.fooID
WHERE   (TblB.isBundle = 1) AND (TblA.isDeleted = 0)
GROUP BY TblB_1.fooID, TblB_1.name
于 2012-06-14T20:29:40.690 に答える