2013-03-20 57 views
0

我必须执行一些表如下:SQL集团已分组结果

  1. 我需要组首先基于一些 然后
  2. 我需要再次组先前的结果基础上别的东西。

有没有办法做到在单个查询这两个分组?

+0

包裹第一分组结果在一个子查询。请添加一些示例记录。 – 2013-03-20 08:55:07

+0

@JW,做到了,但需要很长时间。 – 2013-03-20 08:55:38

+0

@BabuJames为您的查询进行性能调整。 – emaillenin 2013-03-20 08:56:15

回答

0

你应该通过这两种方法检查你想要的结果:

select * 
from (
    select * 
    from table 
    group by acol 
) 
group by bcol 



select * 
from table 
group by acol, bcol 

试试这两个,他们应该帮助

+0

我试过了第一个变体。我有大约54,00,000条记录要取。第一种方法需要很长时间。第二种方法不会帮助,因为我需要对第一组的结果使用一些聚合方法。 – 2013-03-20 09:08:48

+0

所以我建议在表中添加一些索引。如果你可以发布你的桌子,这样会更好,所以我们可以帮助你更好。 – 2013-03-20 10:16:04

0

这将是我们更容易帮助你,如果你告诉我们一些代码为“ JW“要求。由于关于查询结构的信息不多,请让我试试看。你试图做这样的事情:

WITH FirstGroup 
AS  (   
     SELECT Color, ReorderPoint, COUNT(*) Items 
     FROM Production.Product 
     GROUP BY Color, ReorderPoint   
     ) 
SELECT Color, SUM(ReorderPoint), SUM(Items) TotalItems 
FROM FirstGroup 
GROUP BY Color 

注:我用了AdventureWorks数据库