我有一个视图,我想用它来生成工资报告。我希望它能够选择/获取最近3个月的月度处理数据。例如,如果今天是2012年5月15日,5月份的工资单还没有完成,我只想得到4月、3月和2月的结果。
我的问题是:
SELECT dbo.[@EIM_PROCESS_DATA].U_Tax_year, dbo.[@EIM_PROCESS_DATA].U_Employee_ID, SUM(dbo.[@EIM_PROCESS_DATA].U_Amount) AS PAYE,
dbo.OADM.CompnyName, dbo.OADM.CompnyAddr, dbo.OADM.TaxIdNum, dbo.OHEM.lastName + ', ' + ISNULL(dbo.OHEM.middleName, '')
+ ' ' + ISNULL(dbo.OHEM.firstName, '') AS EmployeeName, dbo.OHEM.govID, dbo.[@EIM_PROCESS_DATA].U_Process_month
FROM dbo.[@EIM_PROCESS_DATA] INNER JOIN
dbo.OHEM ON dbo.[@EIM_PROCESS_DATA].U_Employee_ID = dbo.OHEM.empID CROSS JOIN
dbo.OADM
WHERE (dbo.[@EIM_PROCESS_DATA].U_PD_code = 'SYS033')
GROUP BY dbo.[@EIM_PROCESS_DATA].U_Tax_year, dbo.[@EIM_PROCESS_DATA].U_Employee_ID, dbo.OADM.CompnyName, dbo.OADM.CompnyAddr, dbo.OADM.TaxIdNum,
dbo.OHEM.lastName, dbo.OHEM.firstName, dbo.OHEM.middleName, dbo.OHEM.govID, dbo.[@EIM_PROCESS_DATA].U_Process_month字段U_Process_Month存储一年中月份的名称(varchar)。有什么帮助吗?
发布于 2012-03-09 16:41:18
如果您想要将月份名称转换为日期时间,这里有一个选项:
declare @Month varchar(10) = 'DEC'
declare @Year varchar(4) = '2012'
SELECT CAST(@Month ' ' + @Year AS DATETIME) AS KeyDate将@Month和@Year变量替换为您的字段名称,您就有了第一步;-)
为了只选择最近三个月,可以尝试使用HAVING子句,并使用一个变量@MaxKeydate来表示最近处理的月份:
SELECT (...) FROM bla
HAVING KeyDate > DATEADD(month, -3, @MaxKeyDate)如果您可以使用简单的@MaxKeyDate确定值,则需要亲自查看
SELECT MAX(CAST(@Month ' ' + @Year AS DATETIME)) FROM bla或者它是否更复杂。
https://stackoverflow.com/questions/9630819
复制相似问题