2013-04-18 4 views
0

Я новичок в SQL, я использую SQL Server 2008.Sum сумма по типу питания в SQL Server

В моей базе данных у меня есть 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.type в моей SQL

Спасибо за помощь.

+0

[Вредные привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - стиль старого стиля * разделенный запятыми список таблиц * был отменен с помощью ANSI - ** 92 ** SQL Standard (более ** 20 лет ** назад) –

ответ

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; 
+1

Спасибо и работает как чавканье – Chuki2

Смежные вопросы