2017-03-09 102 views
0

尝试在select语句中使用Distinct但未获得所需的结果。我只希望CaseID返回上次更新的评论。以下是我正在尝试使用的查询。使用不同的选择与多个表加入

Select Distinct av.CaseID,fr.Rule_Description, av.Date, av.Status, fr.RULE_PRIORITY, ac.User_comments, max(ac.Comment_PostDate),ac.UserID 
From tblAlertView av 
Join tblAlertComment ac 
on av.CaseID = ac.CaseID 
Join tblFBLRule fr 
on av.RuleID = fr.Rule_ID 
Join TBLUSER usr 
on ac.UserID = usr.USERID 

group by av.CaseID, fr.Rule_Description, av.Date, av.Status, fr.RULE_PRIORITY, ac.User_comments, ac.Comment_PostDate,ac.UserID 

Query Result

+0

正如@Pream所提到的那样,从'group by'子句中移除'ac.Comment_PostDate',因为这会给你多个结果,并且MAX()聚集将无法按预期工作。当你使用'group by'时,'SELECT'语句中不需要'DISTINCT'。 – Venu

回答

0

而不是使用JOINtblAlertComment删除

ac.Comment_PostDate 

从组中,如果你使用CROSS APPLY您可以指定只返回前1每箱案例评论:

SELECT av.CaseID, 
     fr.Rule_Description, 
     av.Date, 
     av.Status, 
     fr.RULE_PRIORITY, 
     ac.User_comments, 
     ac.Comment_PostDate, 
     ac.UserID 
FROM tblAlertView AS av 
     INNER JOIN tblFBLRule AS fr 
      ON av.RuleID = fr.Rule_ID 
     CROSS APPLY 
     ( SELECT TOP 1 ac.User_comments, ac.Comment_PostDate, ac.UserID 
      FROM tblAlertComment AS ac 
        INNER JOIN tblUser AS usr 
         ON usr.UserID = ac.UserID 
      WHERE ac.CaseID = av.CaseID 
      ORDER BY ac.Comment_PostDate DESC 
     ) AS ac;