在这些类型的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的实例数量。
我不认为我正在寻找能够自己有效地研究这个问题的正确问题,可能是因为我措辞不当。
任何帮助将不胜感激!
答案 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)