0

SQL は初めてで、SQL Server 2008 を使用しています。

私のデータベースには3つのテーブルがあります

  1. テーブルType
  2. テーブルInvoice
  3. テーブルItem

これは、合計金額を取得するための私の SQL コマンドです。

SELECT 
   tbl_type.type,
   ((tbl_item.price * qty) - (tbl_item.price * qty * discount)) as totalAfter,
   tbl_inv.dateInv
FROM 
   tbl_type, tbl_item, tbl_inv 
WHERE 
   tbl_inv.dateInv = '2013-03-26 00:00:00' 
   AND tbl_inv.id = tbl_item.id_invoice 
   AND tbl_type.id = tbl_item.id_type
ORDER BY 
   tbl_inv.dateInv;

したがって、クエリを実行すると返されます

CHICKEN        46.000000    2013-03-26 00:00:00.000
MEAT            3.000000    2013-03-26 00:00:00.000
CHICKEN        69.000000    2013-03-26 00:00:00.000
CHICKEN        46.000000    2013-03-26 00:00:00.000
CHICKEN        69.000000    2013-03-26 00:00:00.000
MEAT            4.500000    2013-03-26 00:00:00.000

しかし、このようにする方法は?

CHICKEN       230.000000    2013-03-26 00:00:00.000
MEAT            7.500000    2013-03-26 00:00:00.000

エラーが発生します

列 'tbl_item.price' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

GROUP BY tbl_type.typeSQLで使用する場合

手伝ってくれてありがとう。

4

1 に答える 1

3
SELECT tbl_type.type,SUM((tbl_item.price * qty) - (tbl_item.price * qty * discount)) as totalAfter ,tbl_inv.dateInv
FROM tbl_type,tbl_item,tbl_inv 
WHERE tbl_inv.dateInv = '2013-03-26 00:00:00' AND tbl_inv.id=tbl_item.id_invoice AND tbl_type.id=tbl_item.id_type
Group by tbl_type.type,tbl_inv.dateInv
ORDER BY tbl_inv.dateInv,tbl_type.type;
于 2013-04-18T11:13:55.207 に答える