2013-03-20 96 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數據庫