Выберите COUNT отдельно и округлите его до ближайшего часа - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь отобразить гистограмму с осью X в качестве метки времени для часов и по оси Y в качестве числа раз, когда автобус был отмечен. Но по какой-то причине программа умеет работать на visual studio, но ошибок нет. Я сделал точку останова, и это показывает, что я могу правильно разделить метку времени в группе часов 1200, 13:00 и 14:00. Но, кроме этого, я считаю, что есть проблема с подсчетом.

<asp:DropDownList ID="ddlBus" runat="server"  Width="200px" OnSelectedIndexChanged="ddlBus_SelectedIndexChanged" AutoPostBack="true">
asp:ListItem Value="0">Select Bus Number</asp:ListItem>
   <asp:ListItem Value="1">Bus 10</asp:ListItem>
   <asp:ListItem Value="2">Bus 45</asp:ListItem>
   <asp:ListItem Value="3">Bus 14</asp:ListItem>
</asp:DropDownList>



string query = string.Format("SELECT DATEPART(HH, [datetime]), COUNT(busFlagDataID) FROM BusFlagData WHERE busStopID='52014' GROUP BY DATEPART(HH,[dateTime]) ORDER BY DATEPART(HH,[dateTime]) ", ddlBus.SelectedItem.Value);
DataTable dt = GetData(query);

        string[] x = new string[dt.Rows.Count];
        decimal[] y = new decimal[dt.Rows.Count];
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            x[i] = dt.Rows[i][0].ToString();
            y[i] = Convert.ToInt32(dt.Rows[i][1]);
        }

        BarChart1.Series.Add(new AjaxControlToolkit.BarChartSeries { Data = y });
        BarChart1.CategoriesAxis = string.Join(",", x);
        BarChart1.ChartTitle = string.Format("{0} Bus Flagged for", ddlBus.SelectedItem.Value);

Это мои данные

CREATE TABLE [dbo].[BusFlagData] (
    [busFlagDataID] INT           IDENTITY (1, 1) NOT NULL,
    [busStopID]     VARCHAR (10)  NOT NULL,
    [busID]         INT           NOT NULL,
    [dateTime]      DATETIME2 (0) NOT NULL,
    PRIMARY KEY CLUSTERED ([busFlagDataID] ASC),
    CONSTRAINT [FK_BusFlagData_Bus] FOREIGN KEY ([busID]) REFERENCES [dbo].[Bus] ([busID]),
    CONSTRAINT [FK_BusFlagData_BusStop] FOREIGN KEY ([busStopID]) REFERENCES [dbo].[BusStop] ([busStopID])
);
...