SQL Select 只有 YYYYMMDD int 格式的月份
SQL Select only month from YYYYMMDD int format
我目前正在尝试编写一个脚本,通过查看 TransactionDate 列 (YYYYMMDD int) 来显示员工每个月的销售额。我尝试使用 CAST LEFT 方法仅查看 TransactionDate 的 YYYYMM 部分,但我仍然得到重复的销售人员姓名以及他们在该特定月份进行销售的每一天的个人计数。最好的方法是简单地获取个人一个月的销售总数,而不是显示他们的名字和该月每一天的数量?这是需要在脚本中解决的问题还是可以在 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
分组。
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 它将 return 来自 YYYYMMDD 整数的 YYYYMM。
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
我目前正在尝试编写一个脚本,通过查看 TransactionDate 列 (YYYYMMDD int) 来显示员工每个月的销售额。我尝试使用 CAST LEFT 方法仅查看 TransactionDate 的 YYYYMM 部分,但我仍然得到重复的销售人员姓名以及他们在该特定月份进行销售的每一天的个人计数。最好的方法是简单地获取个人一个月的销售总数,而不是显示他们的名字和该月每一天的数量?这是需要在脚本中解决的问题还是可以在 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
分组。
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 它将 return 来自 YYYYMMDD 整数的 YYYYMM。
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