2012-02-09 11 views
-2

データベースからの列の合計を取得したいが、クエリは-1を返します。私はこのクエリを持っている:WinFormsでの列の合計の取得

SELECT SUM(total) 
FROM bon 
WHERE   
    (DATEPART(dd, data_adaugare) = DATEPART(dd, @p1)) 
    AND (DATEPART(mm, data_adaugare) = DATEPART(mm, @p1)) 
    AND (DATEPART(yy, data_adaugare) = DATEPART(yy, @p1)) 

とC#のコード:

decimal sumaa = 0; 
DataTable suma = bonTableAdapter.Suma(DateTime.Now); 

foreach (DataRow r in suma.Rows) 
{ 
    sumaa += Convert.ToDecimal(r.ItemArray[0]); 
} 
+0

あなたが '' '代わりに選択合計(合計)のtotal'選択するようにクエリを変更し、あなたのDBMSでそれを実行した場合、あなたはどのような結果を見ていますか? –

+0

私はそれを得ることはありません!なぜ人々は否定的な投票をしますか? –

答えて

1

合計列がNULLであるかもしれない逃しています。その場合は、これを使用してください。

SELECT SUM(isnull(total, 0))... 
+0

正しい構文はISNULL(SUM(total)、0)ですが、依然として望ましい結果ではありません。 sumaaは-1です... –

+2

@ EmilDumbazu:いいえ、答えをお読みください。 Mujtaba Hassanが提案する構文は、より良い答えを提供します。あなたの構文は、SUMの全結果がNULLかどうかをチェックします(それはそうではありません)。彼のバージョンはnull以外の要素だけを合計します。 –

+0

(真剣に、答えを読んで理解してください、それを変えずに間違っていると言ってください)。 –

2

あなたが任意のレコードで+

decimal sumaa = 0; 
    DataTable suma = bonTableAdapter.Suma(DateTime.Now); 
    foreach (DataRow r in suma.Rows) 
    { 
     sumaa += Convert.ToDecimal(r.ItemArray[0]); 
    } 
+0

はい、ここに掲載されたコードの問題ですが、それはまったく問題ではありません。 –

+0

@EmilDumbazu of courseです。 '+'彼は何も集計していません。 – Shai

+0

私のコメントには最高のステートメントはありませんでしたが、+は自分のコードにあります! –

関連する問題