zoukankan      html  css  js  c++  java
  • All 关键字



    本文档已存档,并且将不进行维护。

    GROUP BY 子句和 ALL 关键字

    SQL Server 2005

    Transact-SQL 在 GROUP BY 子句中提供 ALL 关键字。只有在 SELECT 语句还包括 WHERE 子句时,ALL 关键字才有意义。

    ms175028.note(zh-cn,SQL.90).gif注意:
    Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL。避免在新的开发工作中使用 GROUP BY ALL,并计划修改当前使用它的应用程序。

    不应该将 GROUP BY ALL 和访问远程表的查询一起使用。如果查询中也存在 WHERE 子句,则此类查询不支持 GROUP BY ALL;如果查询中不存在 WHERE 子句,GROUP BY ALL 就不会添加值。

    如果使用 ALL 关键字,则即使某些组不包含符合搜索条件的行,查询结果也将包括 GROUP BY 子句生成的所有组。如果不使用 ALL 关键字,则包含 GROUP BY 子句的 SELECT 语句仅显示包含符合搜索条件的行的组。

    第一个示例仅对数量 > 10 的订单分组。

    第二个示例对所有订单分组。

    对于没有符合条件的行的组,包含聚合值(平均价格)的列为 NULL。

    USE AdventureWorks;
    GO
    SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
    FROM Sales.SalesOrderDetail
    WHERE OrderQty > 10
    GROUP BY ProductID
    ORDER BY ProductID ;
    GO
    

    下面是结果集: 

    ProductID   Average Price
    707         20.7765
    708         20.7482
    709         6.175
    711         20.7285
    712         5.7592
    714         32.05
    .............................
    (114 row(s) affected)
    
    -- Using GROUP BY ALL
    USE AdventureWorks;
    GO
    SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
    FROM Sales.SalesOrderDetail
    WHERE OrderQty > 10
    GROUP BY ALL ProductID
    ORDER BY ProductID ;
    GO
    

    下面是结果集: 

    ProductID   Average Price
    707         20.7765
    708         20.7482
    709         6.175
    710         NULL
    711         20.7285
    712         5.7592
    ..............................
    Warning: Null value is eliminated by an aggregate or other SET operation.
    
    (266 row(s) affected)
    本文档已存档,并且将不进行维护。

    GROUP BY 子句和 ALL 关键字

    SQL Server 2005

    Transact-SQL 在 GROUP BY 子句中提供 ALL 关键字。只有在 SELECT 语句还包括 WHERE 子句时,ALL 关键字才有意义。

    ms175028.note(zh-cn,SQL.90).gif注意:
    Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL。避免在新的开发工作中使用 GROUP BY ALL,并计划修改当前使用它的应用程序。

    不应该将 GROUP BY ALL 和访问远程表的查询一起使用。如果查询中也存在 WHERE 子句,则此类查询不支持 GROUP BY ALL;如果查询中不存在 WHERE 子句,GROUP BY ALL 就不会添加值。

    如果使用 ALL 关键字,则即使某些组不包含符合搜索条件的行,查询结果也将包括 GROUP BY 子句生成的所有组。如果不使用 ALL 关键字,则包含 GROUP BY 子句的 SELECT 语句仅显示包含符合搜索条件的行的组。

    第一个示例仅对数量 > 10 的订单分组。

    第二个示例对所有订单分组。

    对于没有符合条件的行的组,包含聚合值(平均价格)的列为 NULL。

    USE AdventureWorks;
    GO
    SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
    FROM Sales.SalesOrderDetail
    WHERE OrderQty > 10
    GROUP BY ProductID
    ORDER BY ProductID ;
    GO
    

    下面是结果集: 

    ProductID   Average Price
    707         20.7765
    708         20.7482
    709         6.175
    711         20.7285
    712         5.7592
    714         32.05
    .............................
    (114 row(s) affected)
    
    -- Using GROUP BY ALL
    USE AdventureWorks;
    GO
    SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
    FROM Sales.SalesOrderDetail
    WHERE OrderQty > 10
    GROUP BY ALL ProductID
    ORDER BY ProductID ;
    GO
    

    下面是结果集: 

    ProductID   Average Price
    707         20.7765
    708         20.7482
    709         6.175
    710         NULL
    711         20.7285
    712         5.7592
    ..............................
    Warning: Null value is eliminated by an aggregate or other SET operation.
    
    (266 row(s) affected)
  • 相关阅读:
    极光推送
    ModelAndView跳转页面的时候,显示了页面的源码问题
    关于字符串比较时候出现的空指针问题的坑
    JAVA的extends用法
    C# 平面文件批量导数据到DB(二)
    C# 平面文件批量导数据到DB(一)
    C#操作文件和文件夹的类介绍
    C# 实现监控文件夹和里面文件的变化
    SQL Server 2012 Throw关键字
    SQL SERVER EXCEPT 和 INTERSECT
  • 原文地址:https://www.cnblogs.com/smilesundream/p/6701279.html
Copyright © 2011-2022 走看看