【问题标题】:Tried to execute a query that does not include the specified expression 'StaffDetails.StaffID' as part of an aggregate function尝试执行不包含指定表达式“StaffDetails.StaffID”的查询作为聚合函数的一部分
【发布时间】:2014-01-24 19:40:49
【问题描述】:

我有一个名为 DGHours 的数据网格,我想用下面的 SQL 填充它。但是,我收到了错误消息“附加信息:您尝试执行的查询不包含指定表达式“StaffDetails.StaffID”作为聚合函数的一部分。我不明白我的sql有什么问题,有什么帮助吗?我希望数据网格按内部连接的 staffID 显示 StaffID、FirstName、LastName 和总小时数。我认为问题与 SUM(TimeSheet.Hours) 有关。

            Dim SqlQuery As String = "SELECT [StaffDetails.StaffID], [StaffDetails.FirstName], [StaffDetails.LastName], [TimeSheet.StaffID], SUM(TimeSheet.Hours) FROM [StaffDetails] INNER JOIN [TimeSheet] ON [StaffDetails].StaffID = [TimeSheet].StaffID WHERE [TimeSheet].TimeSheetMonth='" & cbMonth.Text & "'"
        Dim da As OleDbDataAdapter = New OleDbDataAdapter(SqlQuery, conn)
        Dim ds As DataSet = New DataSet
        da.Fill(ds, "Hours")
        Dim dt As DataTable = ds.Tables("Hours")

        With DGHours
            .AutoGenerateColumns = True
            .DataSource = ds
            .DataMember = "Hours"
        End With

【问题讨论】:

    标签: mysql sql vb.net ms-access


    【解决方案1】:

    如果你使用方括号,它们应该包括每个单独的组件,如表名或列名,而不是全部:使用 e。 G。 [StaffDetails].[StaffID] 而不是 StaffDetails.StaffID]

    但在您的情况下,您也可以省略语句中的所有方括号。只有在表或列名中有空格、逗号等特殊字符,或者如果您将 SQL 关键字(如 SELECTFROM 用作表名)(无论如何这都是不好的做法)时,这些都是必需的。

    此外,如果您在某些列上使用Sum 之类的聚合函数,则需要在其他列上使用GROUP BY,即。 e.对于您的查询,您必须附加

    GROUP BY StaffDetails.StaffID,
             StaffDetails.FirstName,
             StaffDetails.LastName,
             TimeSheet.StaffID
    

    到您的查询结束。

    【讨论】:

    • 谢谢,还是不行,我认为问题出在 SUM 上?
    • 这么喜欢? Dim SqlQuery As String = "SELECT [StaffDetails.StaffID], [StaffDetails.FirstName], [StaffDetails.LastName], [TimeSheet.StaffID], SUM(TimeSheet.Hours) FROM [StaffDetails] INNER JOIN [TimeSheet] ON [StaffDetails] .StaffID = [TimeSheet].StaffID WHERE [TimeSheet].TimeSheetMonth='" & cbMonth.Text & "' GROUP BY StaffDetails.StaffID, StaffDetails.FirstName, StaffDetails.LastName, TimeSheet.StaffID"
    • @Hayden 是的,但请注意方括号!
    • 成功了!杰出的!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    相关资源
    最近更新 更多