在数据集中使用带有嵌套SELECT的Case语句,然后填充参数下拉列表SSRS
我能够在SSRS中填充一个参数下拉列表,从数据集中获取活动列表。尽管我遇到的问题在数据中,但有一个activitylabel字段仅包含在dimact表中,当任何活动的标签值为“versional”时,我希望使用case语句将其替换为父活动的名称,而不是默认的子活动名称。连接数据的字段是activity_pk和activityfk,获取正确父级的字段是prntactfk。下面是一个数据示例,其中我希望2个测试课程行与下拉列表中查询中使用的DISTINCT成为一个在数据集中使用带有嵌套SELECT的Case语句,然后填充参数下拉列表SSRS,select,reporting-services,parameters,dataset,nested,Select,Reporting Services,Parameters,Dataset,Nested,我能够在SSRS中填充一个参数下拉列表,从数据集中获取活动列表。尽管我遇到的问题在数据中,但有一个activitylabel字段仅包含在dimact表中,当任何活动的标签值为“versional”时,我希望使用case语句将其替换为父活动的名称,而不是默认的子活动名称。连接数据的字段是activity_pk和activityfk,获取正确父级的字段是prntactfk。下面是一个数据示例,其中我希望2个测试课程行与下拉列表中查询中使用的DISTINCT成为一个 Example Data: (Na
Example Data: (Name - Label)
CourseA-Course (Not Versional so leave alone)
Test Course-Versional (Parent is Test Course Parent)
Test Course (1.1)-Versional (Parent is Test Course Parent)
CourseB-Document (Not Versional so leave alone)
在SQL中工作而不使用dimact1.ActivityLabel='Versional:
选择DISTINCT act1.activityname
从act1开始
dimact1.ActivityFK=act1.Activity\u PK上的内部联接dimact1
哪里
案例
当dimact1.ActivityLabel='Versional'
存在
选择dimact2.PRNTATFK
来自dimact2
其中dimact2.activitylabel='Versional'
和dimact2.PrntActFK=act1.Activity_PK
那么1
结束=1
按act1.activityname ASC订购
通常在这种情况下,将左连接到父表,然后使用CASE或COALESCE在父值和子值之间进行选择 因此,对于以下数据:
create table Courses
(
ID int
, name varchar(100)
, label varchar(100)
, parentID int
)
insert into Courses
values
(1,'Test Course Parent','Test Course Parent',null)
, (2,'CourseA','Course',null)
, (3,'CourseB','Document',null)
, (4,'Test Course','Versional',1)
, (5,'Test Course (1.1)','Versional',1)
您可以使用如下查询:
select distinct case when c.Label = 'Versional' then p.name
else c.name
end as name
from Courses c
left join Courses p on c.parentID = p.ID
希望这能让你走上正轨。我承认我发现你的例子有点难以理解,所以如果你需要更多信息,请提供一些样本数据和你需要的结果