簡體   English   中英

嘗試執行不包含指定表達式“ StaffDetails.StaffID”作為聚合函數一部分的查詢

[英]Tried to execute a query that does not include the specified expression 'StaffDetails.StaffID' as part of an aggregate function

我有一個名為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

如果使用方括號,則它們應包括表名稱或列名稱之類的每個單個組件,而不是整個組件:使用例如[StaffDetails].[StaffID]而不是StaffDetails.StaffID]

但是,根據您的情況,您也可以省略語句中的所有方括號。 僅當表或列名中包含空格,逗號等特殊字符,或者將SELECTFROM這樣的SQL關鍵字用作表名時,才需要使用這些字符(無論如何都是不正確的做法)。

此外,如果在某些列上使用諸如Sum類的聚合函數,則需要對其他列進行GROUP BY ,即對於查詢,您必須附加

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

到查詢末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM