Предположим, у меня есть таблица SQL Server, которая регистрирует активность пользователя. Предположим, что у него есть идентификаторы пользователя, имя пользователя, дата активности и столбцы типа действия. Я хочу распечатать список всех действий пользователя с одной строкой за каждый месяц активности и столбцом для каждого вида деятельности, суммируя количество раз, когда эта активность произошла в этом месяце. Я пытаюсь сделать это с помощью следующего запроса:Возникли проблемы с запросом в SQL Server
SELECT
user_id,
user_name,
CONVERT(VARCHAR(7), activity_date, 120),
SUM(CASE WHEN activity_type = 'Log In' THEN 1 ELSE 0 END),
SUM(CASE WHEN activity_type = 'Save Document' THEN 1 ELSE 0 END),
SUM(CASE WHEN activity_type = 'Create Document' THEN 1 ELSE 0 END)
FROM UserActivity
WHERE DATE BETWEEN '11-1-2010 00:00:00' AND '12-31-2010 23:59:59'
GROUP BY user_id, user_name, CONVERT(VARCHAR(7), activity_date, 120)
Проблема заключается в том, этот запрос, по существу, дает мне отдельную строку для каждого вида деятельности - много и много строк, без подсчета. Я думаю, что проблема связана с тем, как я делаю даты, потому что если я изменю запрос, чтобы не выбрать дату, я получаю таблицу, которая выглядит «в основном правильной».
Любые мысли?
Что означает @JNK, так это то, что вам нужна группа пользователя user_id, user_name, activity_date – ehudokai
, чтобы отобразить несколько строк вывода, показывающие «отдельные строки». FWIW - хорошая идея указать версию SQL Server в вопросах, таких как добавление тега sql-server-2005 – RichardTheKiwi