c# - GROUP BY 子句中的错误。无法解析查询文本

标签 c# mysql

我有一个复杂的 SQL 语句,我遇到了一个错误。他们提示我这个错误:GROUP BY 表达式错误。无法解析查询文本。

我粘贴了导致此错误的 SQL 语句。谁能告诉我哪里出了问题?有什么想法吗???

SELECT        AllocationDate, LocationName, StationName, Hour1, Hour2, Hour3, Hour4, Hour5, Hour6, Hour7, Hour8, Hour9, Hour10, Hour11, Hour12, EmpName, ShiftTime, 
                     BreakTime, SignIn, SignOut
FROM            (SELECT        z.AllocationDate, z.LocationName, z.StationName, a.Hour1, b.Hour2, c.Hour3, d .Hour4, e.Hour5, f.Hour6, g.Hour7, h.Hour8, i.Hour9, j.Hour10, k.Hour11, 
                                                l.Hour12, m.EmpName, m.ShiftTime, m.BreakTime, m.SignIn, m.SignOut
                      FROM            (SELECT DISTINCT AllocationDate, LocationName, StationName
                                                FROM            satsschema.viewmain
                                                WHERE        (StationName IS NOT NULL)) z LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour1
                                                      FROM            satsschema.view00000100) a ON z.LocationName = a.LocationName AND z.StationName = a.StationName AND 
                                                z.AllocationDate = a.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour2
                                                      FROM            satsschema.view01000200) b ON z.LocationName = b.LocationName AND z.StationName = b.StationName AND 
                                                z.AllocationDate = b.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour3
                                                      FROM            satsschema.view02000300) c ON z.LocationName = c.LocationName AND z.StationName = c.StationName AND 
                                                z.AllocationDate = c.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour4
                                                      FROM            satsschema.view03000400) d ON z.LocationName = d .LocationName AND z.StationName = d .StationName AND 
                                                z.AllocationDate = d .AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour5
                                                      FROM            satsschema.view04000500) e ON z.LocationName = e.LocationName AND z.StationName = e.StationName AND 
                                                z.AllocationDate = e.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour6
                                                      FROM            satsschema.view05000600) f ON z.LocationName = f.LocationName AND z.StationName = f.StationName AND 
                                                z.AllocationDate = f.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour7
                                                      FROM            satsschema.view06000700) g ON z.LocationName = g.LocationName AND z.StationName = g.StationName AND 
                                                z.AllocationDate = g.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour8
                                                      FROM            satsschema.view07000800) h ON z.LocationName = h.LocationName AND z.StationName = h.StationName AND 
                                                z.AllocationDate = h.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour9
                                                      FROM            satsschema.view08000900) i ON z.LocationName = i.LocationName AND z.StationName = i.StationName AND 
                                                z.AllocationDate = i.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour10
                                                      FROM            satsschema.view09001000) j ON z.LocationName = j.LocationName AND z.StationName = j.StationName AND 
                                                z.AllocationDate = j.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour11
                                                      FROM            satsschema.view10001100) k ON z.LocationName = k.LocationName AND z.StationName = k.StationName AND 
                                                z.AllocationDate = k.AllocationDate LEFT OUTER JOIN
                                                    (SELECT DISTINCT AllocationDate, LocationName, StationName, Hour12
                                                      FROM            satsschema.view11001200) l ON z.LocationName = l.LocationName AND z.StationName = l.StationName AND 
                                                z.AllocationDate = l.AllocationDate LEFT OUTER JOIN
                                                    (SELECT        a.EmpName, CONCAT(b.StartTime, ' - ', b.EndTime) AS ShiftTime, CONCAT(a.EmpTime, ' - ', ADDTIME(a.EmpTime, '0 1:0:0.000000')) 
                                                                                AS BreakTime, a.Break, a.EmployeeOnBreak, '' AS SignIn, '' AS SignOut
                                                      FROM            satsschema.employeeslot a, satsschema.ufis b
                                                      WHERE        a.UFISEmpGroup = b.UFISID 
                                                     GROUP BY EmpName) m) Morning
WHERE        (AllocationDate = @AllocationDate) AND (LocationName = @LocationName) AND (StationName <> '') AND (Break = 1)
GROUP BY StationName, LocationName, AllocationDate

最佳答案

我认为你混淆了很多概念。 如果没有诸如 Min、Max、Avg 等聚合函数,则不能使用分组依据。

如果你想使用分组依据,你必须告诉如何处理这些非聚合字段:

Hour1, Hour2, Hour3, Hour4, Hour5, Hour6, Hour7, Hour8, Hour9, Hour10, Hour11, Hour12, EmpName, ShiftTime, BreakTime, SignIn, SignOut

我认为您想要的是 ORDER BY 而不是 GROUP BY。

关于c# - GROUP BY 子句中的错误。无法解析查询文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402237/

相关文章:

c# - 如何很好地调用具有副作用的属性?

mysql - 如何在MySQL中选择转换字段?

mysql - 如何根据数据中的条件填充mysql中的列?

c# - 帮助 WPF 中的物理模拟

c# - int 到二元函数而不递归?

c# - 如何最小化 Entity Framework SaveChangesAsync?

c# - 检查修改文件以使用 winscp 上传

mysql - 如何在查询中创建 MySQL 查询并连接?

mysql - 测试用例编写

mysql - 如何删除 mysql 中以关键字命名的表?