我在ms sql server 2005中编写了一个查询,并且在运行时遇到了一些麻烦。我需要我的查询包括:
select Name, count(*) AS FileCount, SUM(Size)
From alldocs
Group by DirName
HAVING TimeCreated >= '2009-07-20' AND
TimeCreated <= '2009-08-04'
答案 0 :(得分: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
答案 1 :(得分:0)
为什么不
select Name, count(*) AS FileCount, SUM(Size)
From alldocs
WHERE TimeCreated between '2009-07-20' AND '2009-08-04'
Group by DirName
答案 2 :(得分:0)
您应该将名称列添加到分组依据列表中。
SELECT Name, count(*) AS FileCount, SUM(Size)
FROM alldocs
WHERE TimeCreated between '2009-07-20' AND '2009-08-04'
GROUP BY Name