【问题标题】:Using Case statement with nested SELECT in a dataset to then populate a parameter drop-down SSRS在数据集中使用带有嵌套 SELECT 的 Case 语句,然后填充参数下拉 SSRS
【发布时间】:2013-05-05 12:38:07
【问题描述】:

我能够填充 SSRS 中的参数下拉列表,该下拉列表从数据集中获取活动列表。虽然我遇到的问题是在数据中有一个 activitylabel 字段,它只包含在 dimact 表中,并且当任何活动的标签值为“versional”时,我想要一个 case 语句将其替换为父活动的名称默认子活动名称。连接数据的字段是 activity_pk 和 activityfk,获得正确父项的字段是 prntactfk。下面是一个数据示例,我希望 2 个 Test Course 行与下拉列表中查询中使用的 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)

在不使用 dimact1.ActivityLabel = 'Versional: 的情况下在 SQL 中工作的查询:

SELECT DISTINCT act1.activityname
FROM  act1
INNER JOIN dimact1 on dimact1.ActivityFK = act1.Activity_PK
WHERE 
CASE 
        WHEN dimact1.ActivityLabel = 'Versional' 
        AND EXISTS (
            SELECT dimact2.PrntActFK
                FROM dimact2
        WHERE dimact2.activitylabel = 'Versional'
        AND dimact2.PrntActFK = act1.Activity_PK
    ) THEN 1
END = 1
ORDER BY act1.activityname ASC

【问题讨论】:

    标签: select reporting-services parameters dataset nested


    【解决方案1】:

    在这种情况下,通常会将LEFT JOIN 传递给父表,然后使用CASECOALESCE 在父值和子值之间进行选择。

    所以对于像这样的数据:

    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
    

    SQL Fiddle with demo.

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

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多