首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于选择最近3个月薪资数据的SQL视图

用于选择最近3个月薪资数据的SQL视图
EN

Stack Overflow用户
提问于 2012-03-09 16:13:40
回答 1查看 1.2K关注 0票数 1

我有一个视图,我想用它来生成工资报告。我希望它能够选择/获取最近3个月的月度处理数据。例如,如果今天是2012年5月15日,5月份的工资单还没有完成,我只想得到4月、3月和2月的结果。

我的问题是:

代码语言:javascript
复制
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)。有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-09 16:41:18

如果您想要将月份名称转换为日期时间,这里有一个选项:

代码语言:javascript
复制
declare @Month varchar(10) = 'DEC'
declare @Year varchar(4) = '2012'

SELECT CAST(@Month ' ' + @Year AS DATETIME) AS KeyDate

将@Month和@Year变量替换为您的字段名称,您就有了第一步;-)

为了只选择最近三个月,可以尝试使用HAVING子句,并使用一个变量@MaxKeydate来表示最近处理的月份:

代码语言:javascript
复制
SELECT (...) FROM bla
HAVING KeyDate > DATEADD(month, -3, @MaxKeyDate)

如果您可以使用简单的@MaxKeyDate确定值,则需要亲自查看

代码语言:javascript
复制
SELECT MAX(CAST(@Month ' ' + @Year AS DATETIME)) FROM bla

或者它是否更复杂。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9630819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档