Sql server 2008 组合多个cte

Sql server 2008 组合多个cte,sql-server-2008,Sql Server 2008,是否可以将两个cte的结果合并到另一个cte。我编写了一个结合两个cte的查询。结果给出了一个三列数据,我想在其中对第三列进行分组,并对第二列进行平均。第二列由case sum语句生成。如果您询问在查询中使用CTE后是否可以重新使用,答案是否。您不能这样做: with A as ( -- query ) select A.* from A; -- this is a separate query select id , count(*) from A

是否可以将两个cte的结果合并到另一个cte。我编写了一个结合两个cte的查询。结果给出了一个三列数据,我想在其中对第三列进行分组,并对第二列进行平均。第二列由case sum语句生成。

如果您询问在查询中使用CTE后是否可以重新使用,答案是否。您不能这样做:

 with A
 as (
    -- query
 )
 select A.*
 from   A;

 -- this is a separate query
 select id
    ,   count(*)
 from   A
 group by 
        id
但是,您可以以各种方式组合CTE,只要在一条语句中进行组合即可。您可以这样做,在两个CTE中使用假设的CTE
A
,并使用最终查询:

 with A
 as  (
    -- some query
 )
 ,   ACustomers
 as  (
     select *
     from   Customers
         join A
             on ....
 )
 ,   AVendors
 as  (
     select *
     from   Vendors
         join A
              on ....
 )
 select  A.StateId
    ,    ACount = COUNT(*)
    ,    CustomerCount = (select count(*) from ACustomers ac where ac.StateId = A.StateId )
    ,    VendorCount = (select count(*) from AVendors av where av.StateId = A.StateId )
 from    A
 group by 
        A.StateId

发布您已经尝试过的查询。我希望这有帮助。这就是你想要的吗do@Arvin我不知道,但我有时至少做了8次。我看了看,在任何地方都找不到规定的限制。