列'RecordsDate.StartDateTime'在HAVING子句中无效,因为它是

时间:2016-06-22 03:18:58

标签: c# sql asp.net

*对不起,标题不能太长,所以我不得不削减它。 嗨,我想从我的数据库表中得到总持续时间 在asp.net c#中使用SQL Query,dateID为1,日期时间为2016年。我尝试使用下面的代码,但它不起作用。它说'附加信息:列'RecordsDate.StartDateTime'在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中。谁能告诉我我的SQL查询有什么问题?非常感谢:)

        float totalDuration = 0f;

        string sQuery = "SELECT sum(Duration) AS TotalDuration FROM RecordsDate WHERE DateID='1' HAVING DATEPART(yyyy, StartDateTime) = '2016'";

        SqlConnection conn = new SqlConnection(_connStr);
        SqlCommand cmd = new SqlCommand(sQuery, conn);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            totalDuration = float.Parse(dr["TotalDuration"].ToString());


        }
        conn.Close();
        dr.Close();

1 个答案:

答案 0 :(得分:-1)

使用表中的某些列名提供group by: 从记录日期中选择总和(持续时间)作为总持续时间 其中dateid =' 1'有datepart(yyyy,startdatetime)=' 2016' 通过...分组 ?