2015-06-09 2 views
0

Мой код:Как получить сумму столбца, где значение элемента другого столбца = значение?

string hweight = "Hunters"; 
string hsql = "SELECT SUM(Weight), Product From Opened WHERE Product =" + hweight; 

OleDbCommand hcmd = new OleDbCommand(hsql,conn); 
txtHunters.Text = hcmd.ExecuteScalar().ToString(); 

Тогда я получаю следующее сообщение об ошибке:

You tried to execute a query that does not include the specified expression 'Product' as part of an aggregate function.

+4

Вам не хватает предложение 'group by'. –

+1

И SQL кавычки вокруг вашей строки. –

+0

http://en.wikipedia.org/wiki/Aggregate_function –

ответ

1

Ваш SQL должен быть:

SELECT SUM(Weight), Product From Opened WHERE Product =" + hweight + " GROUP BY Product" 

При использовании агрегированных функций вы должны сгруппировать их чем-то ! В вашем случае поле продукта!

+0

Благодарим за помощь –

+0

Добро пожаловать! – CrazyMenConnected

2

Вы пытаетесь выбрать поле/колонки и использовать агрегатную функцию в то же время, что работает только если вы предоставите пункт group by для выбранного поля/колонки, а также:

string hsql = "SELECT SUM(Weight), Product FROM Opened WHERE Product ='" + hweight + "' GROUP BY Product"; 
+0

Upvoted (Но это столбцы, а не поля ...) – jarlh

+0

Спасибо, я в основном пишу поле, для меня они относятся к одной и той же вещи - также будет содержать столбец – luk2302

+0

Спасибо, был очень полезен –

0

Попробуйте это,

string hweight = "Hunters"; 
string hsql = "SELECT SUM(Weight), Product From Opened WHERE Product =" + hweight + " GROUP BY Product"; 
OleDbCommand hcmd = new OleDbCommand(hsql,conn); 
txtHunters.Text = hcmd.ExecuteScalar().ToString(); 
Смежные вопросы