Ich habe eine Datenbank, die eine Spalte von 3 definierten Typen und eine Spalte enthält, die Zahlen enthält. Die Typen können mehrere Male in der Datenbank erscheinen. Ich möchte eine DataTable erstellen, die jeden Typ nur einmal anzeigt und zu Zahlen zusammenfasst, die sich auf diesen Typ beziehen.summieren Daten von Zugriff auf DataTable
List<String> types = typesInTable(table);
DataTable t = new DataTable();
t.Clear();
t.Columns.Add("Type");
t.Columns.Add("Total Expenses");
foreach (String type in types)
{
DataRow tmp = t.NewRow();
tmp["Type"] = type;
int total = 0;
myConnection.Open();
OleDbDataReader reader = null;
OleDbCommand cmd = new OleDbCommand("SELECT [Type] , [Expense] FROM [" + table+"]", myConnection);
reader = cmd.ExecuteReader();
while (reader.Read())
{
if(reader["Type"].ToString().Equals(type))
{
total += Convert.ToInt32(reader["Expense"].ToString());
}
}
tmp["Total Expenses"] = total;
if (!t.Rows.Contains(tmp))
{
t.Rows.Add(tmp);
}
myConnection.Close();
}
Mit diesem Code werden die Typen mehrmals angezeigt.
, warum Sie nicht die Funktion SUMME verwenden? –
"SELECT Summe ([Aufwand]) FROM [" + Tabelle + "] wo [Typ] =" + Typ –