2009-08-03 150 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