groupby in view of sql returns aggregate error

故事扮演 提交于 2019-12-12 01:17:39

问题


I am trying to create a view with this query as you can see here:

SELECT        dbo.Lines.LineNumber, dbo.Lines.DocumentNumber, dbo.Joints.JointNumber, dbo.Joints.JointSize, dbo.Joints.ShopField, dbo.Joints.WPS, dbo.WeldDetails.StateStep2 AS WeldState, dbo.Welds.WeldNumber, 
                         dbo.FitUps.FitUpNumber, MAX(dbo.WeldDetails.Id) AS WeldDetailId, MAX(dbo.FitUpDetails.Id) AS FitupDetailId, dbo.Joints.Id AS JointId, dbo.Ends.Name, dbo.Joints.THK, dbo.FitUpDetails.StateStep2 AS FitupState,
                          dbo.Joints.Revision, dbo.Joints.Note
FROM            dbo.FitUps INNER JOIN
                         dbo.Welds INNER JOIN
                         dbo.Joints INNER JOIN
                         dbo.WeldDetails ON dbo.Joints.Id = dbo.WeldDetails.JointId INNER JOIN
                         dbo.FitUpDetails ON dbo.Joints.Id = dbo.FitUpDetails.JointId ON dbo.Welds.Id = dbo.WeldDetails.WeldId ON dbo.FitUps.Id = dbo.FitUpDetails.FitUpId INNER JOIN
                         dbo.Lines ON dbo.Joints.LineId = dbo.Lines.Id INNER JOIN
                         dbo.Ends ON dbo.Joints.EndId = dbo.Ends.Id
GROUP BY dbo.Joints.Id

But when i want to save the view i get this error :

Here is a part of my data :

Every joint id can have multi fitupdetailid and welddetailid in my view i want just show the maximum value of fitupdetailid and welddetailid of my joint.


回答1:


I rewrote your query with a more readable join structure than what your GUI spit out. This should run for you and fix your error. Whether the results are what you want or not depends on your data. You may also want to re-order the grouping to group how you want, hierarchically. But all of those columns will need to be in the grouping in one form or another.

SELECT
    dbo.Lines.LineNumber, 
    dbo.Lines.DocumentNumber, 
    dbo.Joints.JointNumber, 
    dbo.Joints.JointSize, 
    dbo.Joints.ShopField, 
    dbo.Joints.WPS, 
    dbo.WeldDetails.StateStep2 AS WeldState, 
    dbo.Welds.WeldNumber, 
    dbo.FitUps.FitUpNumber, 
    MAX(dbo.WeldDetails.Id) AS WeldDetailId, 
    MAX(dbo.FitUpDetails.Id) AS FitupDetailId, 
    dbo.Joints.Id AS JointId, 
    dbo.Ends.Name, 
    dbo.Joints.THK, 
    dbo.FitUpDetails.StateStep2 AS FitupState,
    dbo.Joints.Revision, 
    dbo.Joints.Note
FROM
    dbo.FitUps 
    INNER JOIN dbo.FitUpDetails ON dbo.FitUps.Id = dbo.FitUpDetails.FitUpId 
    INNER JOIN dbo.Joints ON dbo.Joints.Id = dbo.FitUpDetails.JointId 
    INNER JOIN dbo.WeldDetails ON dbo.Joints.Id = dbo.WeldDetails.JointId
    INNER JOIN dbo.Welds ON dbo.Welds.Id = dbo.WeldDetails.WeldId
    INNER JOIN dbo.Lines ON dbo.Joints.LineId = dbo.Lines.Id 
    INNER JOIN dbo.Ends ON dbo.Joints.EndId = dbo.Ends.Id
GROUP BY
    dbo.Lines.LineNumber, 
    dbo.Lines.DocumentNumber, 
    dbo.Joints.JointNumber, 
    dbo.Joints.JointSize, 
    dbo.Joints.ShopField, 
    dbo.Joints.WPS, 
    dbo.WeldDetails.StateStep2,
    dbo.Welds.WeldNumber, 
    dbo.FitUps.FitUpNumber, 
    dbo.Joints.Id,
    dbo.Ends.Name, 
    dbo.Joints.THK, 
    dbo.FitUpDetails.StateStep2,
    dbo.Joints.Revision, 
    dbo.Joints.Note


来源:https://stackoverflow.com/questions/39150261/groupby-in-view-of-sql-returns-aggregate-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!