折叠行组 (Visual Database Tools)

适用于:SQL Server

可以创建一个查询结果,其中每个结果行对应于原始数据中的整组行。 折叠行时,需要注意以下几点:

  • 可以消除重复行 某些查询可以创建多个相同行出现的结果集。 例如,可以创建一个结果集,其中每一行都包含包含作者的城市和州/自治区名称,但如果城市包含多个作者,则会有几行相同的行。 生成的 SQL 可能如下所示:

    SELECT city, state  
    FROM authors  
    

    上述查询生成的结果集并不十分有用。 如果城市包含四个作者,结果集将包含四个相同的行。 由于结果集不包含除城市和州以外的任何列,因此无法区分相同的行。 避免此类重复行的一种方法是添加其他列,以使行之间有所不同。 例如,如果包括作者名称,则每行将有所不同(如果没有两位类似命名的作者位于任何一个城市中)。 生成的 SQL 可能如下所示:

    SELECT city, state, fname, minit, lname  
    FROM authors  
    

    当然,前面的查询消除了症状,但并没有真正解决问题。 也就是说,结果集没有重复项,但它不再是城市的结果集。 若要消除原始结果集中的重复项,并且仍有每一行描述城市,可以创建只返回不同行的查询。 生成的 SQL 可能如下所示:

    SELECT DISTINCT city, state  
    FROM authors  
    

    有关消除重复项的详细信息,请参阅 排除重复行(Visual Database Tools)

  • 可以对行组进行计算 也就是说,可以汇总行组中的信息。 例如,可以创建一个结果集,其中每一行包含包含作者的城市和州/自治区名称,以及该城市中包含的作者数。 生成的 SQL 可能如下所示:

    SELECT city, state, COUNT(*)  
    FROM authors  
    GROUP BY city, state  
    

    有关计算行组的详细信息,请参阅 汇总查询结果(Visual Database Tools)排序和组查询结果(Visual Database Tools)

  • 可以使用选择条件包括行组 例如,可以创建一个结果集,其中每行包含包含多个作者的城市和州/自治区名称,以及该城市中包含的作者数。 生成的 SQL 可能如下所示:

    SELECT city, state, COUNT(*)  
    FROM authors  
    GROUP BY city, state  
    HAVING COUNT(*) > 1  
    

    有关对行组应用选择条件的详细信息,请参阅 为组指定条件(Visual Database Tools)在同一查询中使用 HAVING 和 WHERE 子句(Visual Database Tools)

另请参阅

指定搜索条件(Visual Database Tools)
设计查询和视图操作指南主题(在 Visual Database Tools 中)