我试图每个月从一个数据库中返回6个数字。
目前我正在使用两个相隔6个月的日期来查询数据库并返回一个总和号码,我想返回两个代表两个月之间的数字
到目前为止,我的代码是;
OleDbCommand com = new OleDbCommand("SELECT sum([sum]) FROM Attendance WHERE ([Attendance_Date]) >= ? AND ([Attendance_Date]) <= ? AND [Person] = ?", Program.DB_CONNECTION);
com.Parameters.Add(new OleDbParameter("", fromDate));
com.Parameters.Add(new OleDbParameter("", toDate));
com.Parameters.Add(new OleDbParameter("", person.ID));
OleDbDataReader dr = com.ExecuteReader();
if (dr.Read())
{
try
{
int attendance = Convert.ToInt32(dr.GetDouble(0));
MessageBox.Show(attendance.ToString());
}
catch
{
}
}
dr.Close();
有没有人知道我如何能够重复以上6种不同日期的日期和日期?
答案 0 :(得分:0)
您可以将日期分成几个部分,并专注于月份部分。
您可以使用以下SQL:
SELECT
DATEPART(MONTH, [Attendance_Date]) AS Month,
SUM(Value) AS Sum
FROM
Attendance
WHERE
[Person] = @personId
AND [Attendance_Date] >= @fromDate
AND [Attendance_Date] < @toDate
GROUP BY
DATEPART(MONTH, [Attendance_Date])
请记住,此查询将返回多个包含两列的结果,因此您必须使用DataReader来读取不同的行。你的结果集将是这样的:
Month Value
4 250
5 180
7 200
8 300
9 25
P.S。 :此示例涵盖4月1日至10月1日之间的6个月的日期。而且6月也没有任何记录。还要记住,这段代码是用T-SQL编写的,目标是Microsoft SQL。其他变体(Oracle,mySQL查询可能因SQL差异而有所不同)