2009-08-03 87 views
0

我在ms sql server 2005中編寫一個查詢,並有一些麻煩讓它運行。我需要我的查詢包括:SQL查詢幫助,MS SQL服務器2005年(羣由和有)

  1. 包括從日期範圍內的所有文檔2009-07-20至2009-08-04
  2. 使用「尺寸」領域的總和列
  3. 包括記錄計數列
  4. 集團通過名稱

select Name, count(*) AS FileCount, SUM(Size) 
From alldocs 
Group by DirName 
HAVING TimeCreated >= '2009-07-20' AND 
TimeCreated <= '2009-08-04' 

回答

2

既然你在查詢不屬於聚集(SUM,COUNT,AVG),你可以使用一個普通字段WHERE:

SELECT 
    DirName, count(*) AS FileCount, SUM(Size) 
FROM 
    alldocs 
WHERE 
    TimeCreated >= '2009-07-20' 
    AND TimeCreated <= '2009-08-04' 
GROUP BY 
    DirName 

你只需要在HAVING,如果你想基於限制的東西一個集合,例如

HAVING Count(*) > 5 

馬克

PS:如果你想顯示的不是字節MB,使用此查詢:

SELECT 
    DirName, count(*) AS FileCount, SUM(Size)/(1024*1024) as 'Size MB' 
FROM 
    alldocs 
WHERE 
    TimeCreated >= '2009-07-20' AND TimeCreated <= '2009-08-04' 
GROUP BY 
    DirName 
+0

有沒有一種簡單的方法在大小字段上運行轉換,以便顯示MB經文字節? – 2009-08-03 10:12:40

0

WH y不是

select Name, count(*) AS FileCount, SUM(Size) 
From alldocs 
WHERE TimeCreated between '2009-07-20' AND '2009-08-04' 
Group by DirName 

+0

你會改變字段名嗎? – adatapost 2009-08-03 10:26:59

0

你應該列添加名稱到集團通過列表。

SELECT Name, count(*) AS FileCount, SUM(Size) 
FROM alldocs 
WHERE TimeCreated between '2009-07-20' AND '2009-08-04' 
GROUP BY Name