SQL 服务器中的 UNION 和 GROUP BY

Posted

技术标签:

【中文标题】SQL 服务器中的 UNION 和 GROUP BY【英文标题】:UNION and GROUP BY in SQL server 【发布时间】:2016-09-16 14:18:00 【问题描述】:

我需要帮助才能在 SQL Server 中创建视图。我有这样的事情

    SELECT MemberId,
           Name,
           SUM(TotalSales) as SalesAmount,
           CreatedOn
    FROM (
             (SELECT MAX(0) AS MemberId,
                     MAX('Others') AS Name,
                     SUM(TotalSales) AS SalesAmount,
                     CreatedOn
              FROM   ... AS A
              GROUP  BY CreatedOn
             )
             UNION
             (SELECT MemberId,
                     Name,
                     SUM(TotalSales) AS SalesAmount,
                     CreatedOn
              FROM   ... AS D
              GROUP BY MemberId, Name, CreatedOn            
         )
    ) AS E
    GROUP BY MemberId, Name, CreatedOn

但是当我保存视图时,Microsoft SQL Server 管理显示这个错误:

谁能帮帮我? 提前致谢

【问题讨论】:

我认为视图不允许分组 你能把错误图片直接放在你的问题里,还是把错误文字放在你的问题里? 你能显示完整的查询吗? @SandipPatel 我认为他们会这样做 @hatchet 新用户不能这样做。所以你可以帮他编辑问题。 【参考方案1】:

我认为您正在寻找这样的东西:

SELECT  MemberId, Name, SUM(SalesAmount) as SalesAmount, CreatedOn 
FROM ( 
    SELECT MAX(0) AS MemberId, 
           MAX('Others') AS Name, 
           SUM(TotalSales) AS SalesAmount, CreatedOn
    FROM
       ... AS A
    GROUP BY CreatedOn

    UNION

    SELECT MemberId, Name, 
           SUM(TotalSales) AS SalesAmount, CreatedOn
    FROM
        ... AS D
    GROUP BY MemberId, Name, CreatedOn            

 ) AS E
 GROUP BY MemberId, Name, CreatedOn

【讨论】:

所以您的意思是简单地从合并的两个选择中删除括号? @hatchet 嗯,我不知道我在想什么……除此之外还有一个小的更正:SUM(TotalSales) 变成了SUM(SalesAmount)。删除括号不应该有任何区别。 除了TotalSales 上的错误名称之外,查询似乎没问题。 rextester.com/QCFS96639 不知道为什么它是downvote..看起来括号是实际问题

以上是关于SQL 服务器中的 UNION 和 GROUP BY的主要内容,如果未能解决你的问题,请参考以下文章

SQL union all 与 group by

在 sql 查询中使用 group/order by 和 union 子句

oracle中的group by和union

Excel VBA SQL UNION SUM 对具有不同列名的表进行 GROUP BY

Mysql UNION 和 GROUP BY

如何在 JPQL 中使用 GROUP BY 和 UNION