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 

Вам нужно сгруппировать по 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 
  • Отчет SQL Server Reporting Studio с сообщением «ERROR #» или недопустимой ошибкой типа данных
  • Как создать гистограмму на SSRS
  • Какие учетные данные необходимо передавать при доступе к отчету SSRS через URL-адрес?
  • Результат SSRS отличается от результата SSMS тем же запросом
  • Почему мои диаграммы не отображаются в SSRS 2012?
  • SSRS Subreport выполняется несколько раз, я хочу, чтобы он выполнялся один раз
  • Перемещение только подписки с SSRS 2008 на SSRS 2012
  • Как настроить SQL Azure Reporting?
  • Создайте набор данных SSRS, который запрашивает данные, зависящие от результатов из хранимой процедуры, которая создает таблицу Temp для хранения результатов?
  • Epicor 10 (ERP) Ошибка отчетности SSRS: максимум 1024 столбца возвращены
  • Как перемещать столбцы деталей между родительскими группами в SSRS
  • Давайте будем гением компьютера.