使用非聚合中聚合的结果导致GROUP BY出现问题

时间:2016-11-02 18:12:56

标签: sql group-by aggregate-functions teradata group-concat

我的查询中有一列导致我的群组出现问题。如果我在组中包含该列,则会收到错误:" GROUP BY和WITH ... BY子句可能不包含聚合函数。"但如果我从GROUP中删除该列,我会得到#34;选定的非聚合值必须是关联组的一部分。"

我认为问题是因为当列没有聚合时,它使用的是聚合列。如果我在这个问题上是正确的,和/或我如何解决,请告诉我。

TIdHTTP

1 个答案:

答案 0 :(得分:0)

无论如何,请勿使用列的位置进行聚合。

select      userid,department,fullname,office,title,extension

           ,  max (case rn when 1 then        region else '' end)
           || max (case rn when 2 then ',' || region else '' end)
           || max (case rn when 3 then ',' || region else '' end)
           || max (case rn when 4 then ',' || region else '' end) as location

           ,max (case when region = 'West' and DEPARTMENT = 10 then 'West_10' end)    as team

from       (select      e.*
                       ,row_number() over
                        (
                            partition by    userid,department,fullname,office,title,extension 
                            order by        regionname
                        ) as rn

            from        employee
            ) 

group by    userid,department,fullname,office,title,extension
;