我有一个查询,我发现我想修改这个查询,以便获得额外的列,并对最近3个月找到的金额进行求和。我想为这个做一个水晶报告。下面的查询。
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
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表OHEM包含一个名为U_Process_month的字母数字字段,其中包含从1月到12月的字符。与上面的查询一样,SUM(dbo.[@EIM_PROCESS_DATA].U_Amount)给出了所有PAYE金额的合计ie. U_PD_code = 'SYS033'。
我想有一个查询,加起来过去3个月(年)的基础上选择的年份和月份。
我还想检索和额外的专栏,SUM(dbo.[@EIM_PROCESS_DATA].U_Amount) as TAXABLEPAY where (dbo.[@EIM_PROCESS_DATA].U_PD_code = 'SYS034')。
我该如何实现这一点?感谢您的帮助。
发布于 2013-04-17 00:58:07
我不确定U_Tax_year是什么数据类型,所以我把它保留为INT。但是,此查询应返回您设置的月份之前的3个月。
DECLARE @start_month DATETIME;
DECLARE @start_year INT;
SET @start_month = '2013-04-01';
SET @start_year = 2013;
SELECT dbo.[@EIM_PROCESS_DATA].U_Tax_year
, dbo.[@EIM_PROCESS_DATA].U_Employee_ID
, SUM(CASE WHEN dbo.[@EIM_PROCESS_DATA].U_PD_code = 'SYS033' THEN dbo.[@EIM_PROCESS_DATA].U_Amount ELSE 0 END) AS PAYE
, SUM(CASE WHEN dbo.[@EIM_PROCESS_DATA].U_PD_code = 'SYS034' THEN dbo.[@EIM_PROCESS_DATA].U_Amount ELSE 0 END) AS TAXABLEPAY
, 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
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 IN ('SYS033', 'SYS034')
AND dbo.OHEM.U_Process_month IN (DATENAME(MONTH, DATEADD(MONTH,-3, @start_month)), DATENAME(MONTH, DATEADD(MONTH,-2, @start_month)), DATENAME(MONTH, DATEADD(MONTH,-1, @start_month)))
AND dbo.[@EIM_PROCESS_DATA].U_Tax_year = @start_year
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;https://stackoverflow.com/questions/15970771
复制相似问题