2017-05-22 1 views
0

からGroupOdd dbtableまで合計weekly_slotを合計しようとしていますが、すべての行に対して10個の値が得られます。私を訂正することができればと感謝します。それ以外に、GroupOdd dbtableをより大きな値に応じてソートする方法を最初に更新する方法sum_weekly_slot
ありがとうございます。それに応じて更新するよりC#SQLクエリ - sum(weekly_slot)FROMグループを使用しようとしました

SELECT id, MAX(rev) 
FROM YourTable 
GROUP BY id 

cmd2 = new SQLiteCommand(); 
cmd2 = dbConnect.CreateCommand(); 
//cmd2.CommandText = "DELETE FROM GroupOdd"; 
//cmd2.ExecuteNonQuery(); 
cmd2.CommandText = "SELECT Sum(Weekly_Slot) AS Sum_Weekly_Slot FROM GroupOdd group by Teacher_Name"; 
DataTable dt2 = new DataTable(); 
SQLiteDataAdapter da2 = new SQLiteDataAdapter(cmd2); 
da2.Fill(dt2); 
foreach (DataRow dr2 in dt2.Rows) 
{ 
    //cmd.CommandText = "INSERT INTO GroupOdd (Teacher_Name, Standard, Subject, Weekly_Slot, Balance_Slot) VALUES (@Teacher_Name, @Standard, @Subject, @Weekly_Slot, @Balance_Slot)"; 
    cmd2.CommandText = "UPDATE GroupOdd SET Sum_Weekly_Slot = @Sum_Weekly_Slot"; 
    //cmd2.Parameters.AddWithValue("@Sum_Weekly_Slot", dr2["Sum(Weekly_Slot)"].ToString()); 
    cmd2.Parameters.AddWithValue("@Sum_Weekly_Slot", dr2["Sum_Weekly_Slot"].ToString()); 
    cmd2.ExecuteNonQuery(); 
} 

答えて

0

必要なのは、MAX集約関数とGROUP BY句があります。

IF

Sum(Weekly_Slot); 

はuは、他の教師のためのID(TeacherId)を使用しようTeacher_Namesがユニークでチェック

Count(Weekly_Slot) 
+0

次のように解決しました:cmd2.CommandText = "SELECT Teacher_Name、Sum(Weekly_Slot)FROM GroupOdd GROUP BY Teacher_Name"; cmd2.CommandText = "UPDATE GroupOdd SET Sum_Weekly_Slot = @Sum_Weekly_SlotどこTeacher_Name = @ Teeher_Name"; cmd2.Parameters.AddWithValue( "@ Teacher_Name"、dr2 ["Teacher_Name"]。ToString()); cmd2.Parameters.AddWithValue( "@ Sum_Weekly_Slot"、dr2 ["Sum(Weekly_Slot)"]。ToString());しかし、どのように私はSum_Weekly_Slotで並べ替えるようにGroupOddテーブルを更新できますか?ありがとう – Michael

0
SELECT Teacher_Name, Sum(Weekly_Slot) AS Sum_Weekly_Slot FROM GroupOdd 
group by Teacher_Name order by Sum(Weekly_Slot) desc 

てみ

を探しているものではありません。 Sum(Weekly_Slot) descの順序では、最初にテーブルをソートする必要があります。

+0

SELECT Teacher_Name、Sum(Weekly_Slot)からの値がありませんAS Sum_Weekly_Slot FROM GroupOdd Sum(Weekly_Slot)descでTeacher_Name順のグループ。 – Michael

+0

次のように解決しました。 cmd2.CommandText = "SELECT Teacher_Name、Sum(Weekly_Slot)FROM GroupOdd GROUP BY Teacher_Name"; cmd2.CommandText = "UPDATE GroupOdd SET Sum_Weekly_Slot = @Sum_Weekly_SlotどこTeacher_Name = @ Teacher_Name"; cmd2.Parameters.AddWithValue( "@ Teacher_Name"、dr2 ["Teacher_Name"]。ToString()); cmd2.Parameters.AddWithValue( "@ Sum_Weekly_Slot"、dr2 ["Sum(Weekly_Slot)"]。ToString()); しかし、Sum_Weekly_Slotで並べ替えるようにGroupOddテーブルを更新するにはどうすればよいですか?ありがとう。 – Michael

+0

なぜ物理的にテーブルをソートする必要があるのですか? orderby節を使用してテーブルから常にデータを読み取ることができます。結果セットはソートされた順序で常に取得されます。 を選択してください* Sum_Weekly_SlotのGroupOddオーダーから – Santhosh

関連する問題