【发布时间】:2016-03-03 11:35:39
【问题描述】:
在通过 SQL 按日期对数据进行分组时,我需要一些帮助,但似乎遇到了错误。
这是我当前的 SQL 语句,用作传递给 Excel VBA 宏的变量。
SQLtext = "SELECT [Offered], [MidnightStartDate], tblConfig_Queue.[Name], tblConfig_Queue.[Reporting]" & _
"FROM tblData_QueuePerformanceByPeriod INNER JOIN tblConfig_Queue on tblConfig_Queue.Pkey = tblData_QueuePerformanceByPeriod.FKQueue " & _
"Where [Offered]>0 AND[MidnightStartDate]>" & MakeUSSQLDate(Sheet13.Range("A1").Value) & " AND [MidnightStartDate]<" & MakeUSSQLDate(Sheet13.Range("A2").Value + 1) & _
""
字段 MidnightStartDate 是美国格式的日期和时间字段。 MakeUSSQLDate 过程将其转换为英国格式。然后,我想从该字段中删除任何时间值,并且只有日期,并按此字段分组,以便为每个日期的每个 [Name] 和 [Reporting] 值提供 [Offered] 总数。我已经使用 convert 函数去除了时间,目前它的工作原理如下。
SQLtext = "SELECT [Offered], convert(varchar, [MidnightStartDate], 103) AS [Date2], tblConfig_Queue.[Name], tblConfig_Queue.[Reporting]" & _
"FROM tblData_QueuePerformanceByPeriod INNER JOIN tblConfig_Queue on tblConfig_Queue.Pkey = tblData_QueuePerformanceByPeriod.FKQueue " & _
"Where [Offered]>0 AND[MidnightStartDate]>" & MakeUSSQLDate(Sheet13.Range("A1").Value) & " AND [MidnightStartDate]<" & MakeUSSQLDate(Sheet13.Range("A2").Value + 1) & _
""
但是我似乎无法按日期分组。我已将GROUP BY CONVERT(varchar, [MidnightStartDate], 103) ORDER BY CONVERT(varchar, [MidnightStartDate], 103) 添加到 SQL 语句的末尾以尝试解决此问题,但只会返回错误消息。
【问题讨论】:
-
你能发布错误吗?
-
你得到什么错误?
-
我收到以下错误:[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'tblData_QueuePerformanceByPeriod.Offered' 在选择列表中无效,因为它不包含在聚合函数或GROUP BY 子句。
-
我现在已经在我的 GROUP BY 中包含了 tblConfig_Queue.[Name], tblConfig_Queue.[Reporting],但是 [Offered] 的总数似乎不正确。
-
谢谢大家 - 现在一切正常。当我将 SELECT [Offered] 更改为 SELECT SUM([Offered]) 时,总数似乎是正确的。我还从 GROUP BY 语句中删除了 [Offered],因为它会导致错误。
标签: sql-server excel vba ms-access group-by