1. ホーム
  2. sql

[解決済み] テーブルから複数の列を選択し、1つの列でグループ化する

2023-02-20 08:49:53

質問

テーブル名はquot;OrderDetails;で、列は次のとおりです。

OrderDetailID || ProductID || ProductName || OrderQuantity

OrderQuantityのSUMを持ちながら、複数のカラムを選択し、Group By ProductIDをしようとしています。

 Select ProductID,ProductName,OrderQuantity Sum(OrderQuantity)
 from OrderDetails Group By ProductID

しかし、もちろんこのコードではエラーが発生します。グループ化するために他のカラム名を追加しなければなりませんが、それは私が望むものではありませんし、私のデータには多くの項目があるので の結果は予想外でした。

サンプルデータクエリです。

ProductID,ProductName,OrderQuantityをOrderDetailsから取得。

結果は以下の通りです。

 ProductID     ProductName    OrderQuantity
    1001          abc               5
    1002          abc               23    (ProductNames can be same)
    2002          xyz               8
    3004          ytp               15
    4001          aze               19
    1001          abc               7     (2nd row of same ProductID)

期待される結果

 ProductID     ProductName    OrderQuantity
    1001          abc               12    (group by productID while summing)
    1002          abc               23
    2002          xyz               8
    3004          ytp               15
    4001          aze               19

ProductNameが一意でないため、複数の列を選択し、Group By ProductID列を選択するにはどうすればよいですか?

そのついでにOrderQuantity列の合計も取得してください。

どのように解決するのですか?

複数列を選択しているときに、1列でグループ化するために、このトリックを使用しています。

SELECT MAX(id) AS id,
    Nume,
    MAX(intrare) AS intrare,
    MAX(iesire) AS iesire,
    MAX(intrare-iesire) AS stoc,
    MAX(data) AS data
FROM Produse
GROUP BY Nume
ORDER BY Nume

これは動作します。