我有一个复杂的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
答案 0 :(得分:0)
我认为你混合了很多概念。 如果没有Min,Max,Avg等聚合函数,则不能使用组
如果您想使用分组依据,您必须告诉如何处理这些非聚合字段:
Hour1,Hour2,Hour3,Hour4,Hour5,Hour6,Hour7,Hour8,Hour9,Hour10,Hour11,Hour12,EmpName,ShiftTime,BreakTime,SignIn,SignOut
我认为你想要的是一个ORDER BY而不是GROUP BY。
答案 1 :(得分:0)
如果您想这样做,只能在外部查询中选择聚合函数或分组列。 您可以在group by中使用该列。
...
GROUP BY AllocationDate, LocationName, StationName, Hour1, Hour2, Hour3, Hour4, Hour5, Hour6, Hour7, Hour8, Hour9, Hour10, Hour11, Hour12, EmpName, ShiftTime,
BreakTime, SignIn, SignOut
感谢。