Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数据集中使用带有嵌套SELECT的Case语句,然后填充参数下拉列表SSRS_Select_Reporting Services_Parameters_Dataset_Nested - Fatal编程技术网

在数据集中使用带有嵌套SELECT的Case语句,然后填充参数下拉列表SSRS

在数据集中使用带有嵌套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

我能够在SSRS中填充一个参数下拉列表,从数据集中获取活动列表。尽管我遇到的问题在数据中,但有一个activitylabel字段仅包含在dimact表中,当任何活动的标签值为“versional”时,我希望使用case语句将其替换为父活动的名称,而不是默认的子活动名称。连接数据的字段是activity_pk和activityfk,获取正确父级的字段是prntactfk。下面是一个数据示例,其中我希望2个测试课程行与下拉列表中查询中使用的DISTINCT成为一个

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

希望这能让你走上正轨。我承认我发现你的例子有点难以理解,所以如果你需要更多信息,请提供一些样本数据和你需要的结果