SQL-запрос выбора со счетчиком и оператором Where - PullRequest
0 голосов
/ 29 сентября 2011

Кажется, я всегда сбивался с толку во время этих типов операторов 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, который бы дал мне все имена, их общее количество и затем фильтр даты. Я напишу грубое утверждение с совершенно неправильным синтаксисом, но я думаю, что оно передаст то, что я пытаюсь сделать ... Я думаю.

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 ]

3 голосов
/ 29 сентября 2011

Ваше ГДЕ было не в том месте:

SELECT Name, Count(*) As Total
FROM Table
WHERE Date = Today AND Type = 1
GROUP BY Name
2 голосов
/ 29 сентября 2011

ГДЕ предшествует ГРУППЕ

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) 
2 голосов
/ 29 сентября 2011

Вам просто нужно переместить 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...