Построение (X, Y) гистограммы в C #, SQL - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь построить график X (недель), Y (количества топлива), показывающий общее количество топлива, потребленного за данный интервал, скажем, в неделях, но на данный момент график показывает только количество топлива (Y) по отношению к дню(Х) Like this.Как я могу наилучшим образом построить график, показывающий все количество потребляемого топлива за неделю. Вот код, отображающий текущий график `

         private void Load_BTN_Click(object sender, EventArgs e)
    {


           try
         {

             string selectQuery = "Select * from  Fuel_Attendend";
             cmd = new SqlCommand(selectQuery, connection);
        try
        {
            connection.Open();
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                this.chart1.Series["Date"].Points.AddXY(dr.GetString(3), dr.GetInt32(6));

            }

        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

            connection.Close();
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
    }

`. Это таблица SQL SQL Table.

1 Ответ

0 голосов
/ 22 октября 2018

Если вы хотите показывать суммы за неделю, самый простой способ - это поменять свой sql на группу по неделям.Что-то вроде ...

select sum(Fuel_Amount), DATEDIFF(week, '2018-01-01', Date) AS WeekNumber from Fuel_Attended group by DATEDIFF(week, '2018-01-01', Date)

И вам придется изменить столбцы, которые вы используете, чтобы быть первым и вторым столбцом, когда вы добавляете точки к серии 1.

this.chart1.Series["Date"].Points.AddXY(dr.Int32(0), dr.GetInt32(1));

Или вы можете использовать

select sum(Fuel_Amount), DATEADD(week, DATEDIFF(week, '1950-01-01', Date), '1950-01-01') AS WeekNumber from Fuel_Attended group by DATEADD(week, DATEDIFF(week, '1950-01-01', Date), '1950-01-01')

Получите неделю, указанную в качестве даты воскресенья для начала недели.а не просто число.

...