[英]SQL - SSRS Reports
我正在尝试使用存储过程和SSRS报告生成器报告员工周年纪念日(本月或下个月)。
问题是,如果我选择组织单位为“ All”的月份或下个月的参数,则有效,但是如果选择单个组织单位,则报告将显示没有工作周年纪念日的人员(列出该组织单位的数据库等)。
在“ SSRS报表”构建器上,我的参数为@month和@SelectList(换句话说,组织单位)
我的数据集是主要的报表存储过程和SelectList。
选择列表基本上按部门将其细分,然后是区域,部分然后是成本组等。
因此,我想知道如果我从选择列表中选择一个特定的选项时如何获得正确的数据显示吗?
非常感谢您在此问题上提供的所有帮助:)
我的存储过程代码如下。
CREATE PROCEDURE [dbo].[rpt_AnniversaryNextMonthTest](
@SelectList nvarchar(2000)
, @Month nvarchar(10)
)
AS
BEGIN
SET NOCOUNT ON;
SELECT
DET_NUMBERA as 'Emp ID'
, DET_SURNAMEA as 'Surname'
, DET_PREF_NMA as 'Preferred Name'
, DET_DATE_JNDD
, CONVERT(VARCHAR, DET_DATE_JNDD, 103) as 'Starting Date'
, (CASE WHEN @Month= 'Next Month' AND Month(getdate())=12
THEN DATEDIFF (year, (DET_DATE_JNDD), (getdate())) +1
ELSE DATEDIFF (year, (DET_DATE_JNDD), (getdate()))
END) as 'Years of Service'
, Division
, Section
, Pay_Location as 'Location'
, ReportsToName
FROM Current_Staff
WHERE POS_STATUSA NOT IN ('AA','AB','AC')
AND ((@Month= 'This Month' AND Month(DET_DATE_JNDD) = Month(Getdate()))
OR (@Month= 'Next Month' AND (Month(DET_DATE_JNDD) = Month(Getdate())+1 OR Month(Getdate())=12 AND Month(DET_DATE_JNDD)=1)))
AND (left(@SelectList,1)='0')
OR (left(@SelectList,1)='1' AND dbo.Current_Staff.Division=substring(@SelectList,2,50))
OR (left(@SelectList,1)='2' AND dbo.Current_Staff.Region=substring(@SelectList,2,50))
OR (left(@SelectList,1)='3' AND dbo.Current_Staff.Section=substring(@SelectList,2,50))
OR (left(@SelectList,1)='4' AND dbo.Current_Staff.CostGroup=substring(@SelectList,2,50))
END
GO
感谢您所做的编辑,以使代码更清晰易读。 艾伦(Alan)是的,情况就是如此,就像括号一样简单! 杰瑞(Jerry)是一个选择列表。 我将代码修改为以下内容,并且可以正常工作。 –
哪里
((left(@ SelectList,1)='0')OR(left(@ SelectList,1)='1'AND dbo.Current_Staff.Division = substring(@ SelectList,2,50))OR(左(@SelectList ,1)='2'AND dbo.Current_Staff.Region = substring(@ SelectList,2,50))OR(left(@ SelectList,1)='3'AND dbo.Current_Staff.Section = substring(@ SelectList,2 ,50))或(left(@ SelectList,1)='4'AND dbo.Current_Staff.CostGroup = substring(@ SelectList,2,50)))
AND POS_STATUSA NOT IN('AA','AB','AC')
AND(((@ Month ='本月'AND Month(DET_DATE_JNDD)=月(Getdate())))OR(@ Month ='下个月'AND(Month(DET_DATE_JNDD)=月(Getdate())+ 1 OR Month( Getdate())= 12 AND Month(DET_DATE_JNDD)= 1)))
结束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.