SQL Выберите только месяц из формата YYYYMMDD int
В настоящее время я пытаюсь написать сценарий, который покажет количество продаж, выполненных работником за каждый месяц, посмотрев столбец TransactionDate (YYYYMMDD int). Я попытался использовать подход CAST LEFT, чтобы посмотреть только на часть YYYYMM TransactionDate, но я все равно получаю дубликаты имен продавцов с индивидуальными подсчетами за каждый из дней, когда они совершили продажу за этот конкретный месяц. Каким будет наилучший подход для простого получения отдельного количества продаж за месяц, вместо того, чтобы показывать свое имя и подсчет за каждый день этого месяца? Это что-то, что нужно решить в скрипте или оно может быть исправлено в матрице отчетов SSRS?
select s.FirstName + s.LastName as 'Sales Person', s.DepartmentID as 'Department ID', count(fact.EmpID), CAST(LEFT(CAST(fact.TransactionDateKey AS VARCHAR(100)), 6) AS INT) from Final.DimSalesPerson s inner join Final.FactRxTransactionDay fact on fact.EmpID = s.EmpID where fact.TransactionDateKey between 20161101 and 20161229 group by s.FirstName + s.LastName, s.DepartmentID, fact.TransactionDateKey
- Как удалить URL веб-службы сервера отчетов из диспетчера конфигурации Reporting Service Configuration Manager
- sp_send_dbmail вставить файл mhtml в тело
- Диспетчер отчетов SSRS + выглядит странно
- Обновить общий путь к источнику данных всех отчетов SSRS для разных путей
- Записи SSRS не отображаются, когда используется (выберите все), но при выборе особого значения
- Применение различного форматирования к различным столбцам в группе столбцов
- Как получить данные из собственной таблицы ссылок в sql
- Конструктор отчетов SSRS 2012 не запускается с удаленного хоста - 401 Несанкционированный
- Отладка отчета не работает, показывая сообщение об ошибке «Убедитесь, что предоставлены достаточные разрешения» Как решить эту проблему?
- Задайте значение параметра SSRS Report Parameter с переданным значением Querystring в SSRS
- Определение отчета SSRS новее, чем сервер
- Несколько отчетов в SSRS с использованием той же хранимой процедуры
- Как добавить параметры для нескольких агентов для исключения из отчета статистики SSRS
Вам нужно сгруппировать по CAST(LEFT(CAST(fact.TransactionDateKey AS VARCHAR(100)), 6) AS INT)
вместо fact.TransactionDateKey
. fact.TransactionDateKey
.
select s.FirstName + s.LastName as 'Sales Person', s.DepartmentID as 'Department ID', count(fact.EmpID), CAST(LEFT(CAST(fact.TransactionDateKey AS VARCHAR(100)), 6) AS INT) from Final.DimSalesPerson s inner join Final.FactRxTransactionDay fact on fact.EmpID = s.EmpID where fact.TransactionDateKey between 20161101 and 20161229 group by s.FirstName + s.LastName, s.DepartmentID, CAST(LEFT(CAST(fact.TransactionDateKey AS VARCHAR(100)), 6) AS INT)
Другим вариантом является TransactionDate / 100, он вернет YYYYMM из YYYYMMDD int.
Select s.FirstName + s.LastName as 'Sales Person', s.DepartmentID as 'Department ID', count(fact.EmpID), fact.TransactionDateKey/100 as 'Period' from Final.DimSalesPerson s inner join Final.FactRxTransactionDay fact on fact.EmpID = s.EmpID where fact.TransactionDateKey between 20161101 and 20161229 group by s.FirstName + s.LastName, s.DepartmentID, fact.TransactionDateKey/100