0

更新混乱して申し訳ありません。「テーブル」は実際のテーブル名ではありませんでした。正しい名前と以下のエラーに関する詳細情報で更新しました。

2 つの列を持つ TrackingNumbers というテーブルがあります。注文ごとに複数の出荷があるため、orderid 列のデータが繰り返されることがあります (データベースは設計しませんでした)。

orderid shipment_cost
1021    5.34
1021    7.83
1022    5.19
1023    5.59

orderid が SQL クエリを使用して繰り返される場合、どのようにすべての shipping_cost 値を追加できますか? したがって、クエリの結果は次のようになります。

orderid shipment_cost
1021    13.17
1022    5.19
1023    5.59

私の最善の推測では、次のようになります。

SELECT orderid, SUM(shipment_cost) FROM TrackingNumbers GROUP BY orderid

しかし、それは私に不特定のSQLエラーを与えます。それが私のクエリなのか、それともばかげた専用アプリなのかはわかりません。アドバイスをありがとう!


更新 2:回答によると、私のクエリは問題ないようでした。また、自分の MySQL サーバーを再確認したところ、問題なく戻ってきました。それはアプリケーションのせい (Volusion) に違いありません。カスタム レポートを実行するための粗悪な小さなインターフェイスがあり、SQL クエリを余分なものでラップしているように見えます。Volusion からのエラー:

SQL Error: SELECT * ,17041 as RecordCount 
           FROM (SELECT TOP 10 * 
                 FROM (SELECT TOP 10 orderid, SUM(shipment_cost) 
                       FROM TrackingNumbers 
                       GROUP BY orderid ORDER BY ) 
                 SUBSEL ORDER BY ) 
           PAGESEL ORDER BY

そして、次のようなORDER BYを追加すると

SELECT orderid, SUM(shipment_cost) 
FROM TrackingNumbers 
GROUP BY orderid 
ORDER BY orderid ASC 

それがそれが望んでいるように見えるので:

SQL Error: SELECT * ,17041 as RecordCount 
           FROM (SELECT TOP 10 * 
                 FROM (SELECT TOP 10 orderid, SUM(shipment_cost) 
                       FROM TrackingNumbers 
                       GROUP BY orderid 
                       ORDER BY orderid ASC) 
                 SUBSEL ORDER BY orderid DESC ) 
           PAGESEL ORDER BY orderid ASC

Volusion のサポートが手がかりを提供できるかどうかを確認する必要があると思います. 再度、感謝します!


Update3:もちろん、Volusion のサポートは役に立ちませんが、このクエリは別の SQL サーバーで動作することを伝えましたが、インターフェイスがそれを台無しにしていることが明らかです。ダウンしているデータベースにデータをインポートして、そこで操作する必要があるようです。

4

2 に答える 2

3

以下のクエリを使用

SELECT orderid, SUM(shipment_cost) FROM [table] GROUP BY orderid

tableはSQLキーワードです

于 2012-04-27T06:18:00.867 に答える
2

私はノースウィンド データベースで同じクエリを試しました。ここでは、customerid が等しい貨物を合計しようとしています。

SQLFiddleで同じことを確認できます

私もあなたのクエリを修正しましたが、今では動作するはずです:

合計の最も内側の選択でエイリアスを指定するだけですSUM(shipment_cost) as Freight

  SELECT * ,17041 as RecordCount 
  FROM(SELECT TOP 10 * 
       FROM(SELECT TOP 10 orderid, SUM(shipment_cost) as Freight
            FROM TrackingNumbers 
            GROUP BY orderid 
            ORDER BY orderid ASC) 
       SUBSEL ORDER BY orderid DESC)
  PAGESEL ORDER BY orderid ASC
于 2012-04-27T06:14:00.447 に答える