SQL选择带有Count和Where语句的查询

时间:2011-09-28 20:50:52

标签: sql sql-server database

在这些类型的SQL语句中,我似乎总是惹恼自己。这就是我想要完成的事情。

我的示例表

Name    Date    Type
Bob     9/28/11 1
Bob     9/27/11 1
Bob     9/28/11 2
Debra   9/28/11 1

我正在尝试编写一个SQL语句,它会给我所有的名字,它们的总计数,然后是一个日期过滤器。我会用完全错误的语法编写一个rought语句,但我认为它会传达我正在尝试做的事情......我想。

SELECT Name, Count(*) As Total
FROM Table
GROUP BY Name, Total
WHERE Date = Today (I'm aware you can't do a WHERE in a GROUP BY) AND Type = 1

基本上,我想找回一组数据,这些数据将显示名称,今天类型1的实例数量。

我不认为我正在寻找能够自己有效地研究这个问题的正确问题,可能是因为我措辞不当。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:3)

你的地点在错误的地方:

SELECT Name, Count(*) As Total
FROM Table
WHERE Date = Today AND Type = 1
GROUP BY Name

答案 1 :(得分:2)

您只需在WHERE之后移动FROM

SELECT Name, Count(*) As Total
FROM Table
WHERE [Date] = CAST(getdate() as Date) -- or 'Jan 1 1990'
AND [Type] = 1
GROUP BY Name 

答案 2 :(得分:2)

GROUP

之前的地方
SELECT Name, Count(*) As Total
FROM Table
WHERE Date >= @Today --assuming your date passed in has no time
AND Date < DATEADD(d,1,@Today) 
AND Type = 1
GROUP BY Name, Total

例如你可以运行

SELECT LEFT(name,1) FROM sysobjects
WHERE name < 'p'
GROUP BY LEFT(name,1)