我是SQL新手,我正在使用SQL Server 2008.
在我的数据库中,我有3个表
Type
Invoice
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子句中。
我在SQL中使用GROUP BY tbl_type.type
感谢您的帮助。
答案 0 :(得分: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;