1

我正在尝试解决我的 sql 导出到表中的多行问题DataSet1

基本上一个字段 ( SUB_ATTRIBUTE_DESC) 可以包含多个值。我的唯一标识符值是UCN. FULL_NAME每个 UCN 也是唯一的。我正在尝试将所有可能的答案组合在以逗号分隔的表格中的同一字段中,因此我将其作为表达式输入到表格的空白列中。

=join(LookupSet(Fields!FULL_NAME.Value, Fields!UCN.Value, 
      Fields!SUB_ATTRIBUTE_DESC.Value, "DataSet1"),",")

我的表达式只是返回空白。

UCN:FULL_NAME:SUB_ATTRIBUTE_DESC  

1.....:ABC.............:Help  
1.....:ABC.............:Me  
1.....:ABC.............:Please

我想要一个在我的表格中包含“Help,Me,Please”的字段

变成

UCN:FULL_NAME:New_Field  

1.....:ABC.............:Help,Me,Please

你能帮我吗?

谢谢

4

2 回答 2

2

尝试这个:

小提琴演示

SELECT t1.UCN, t1.FULL_NAME,
       newCol =REPLACE( (SELECT SUB_ATTRIBUTE_DESC AS [data()]
                  FROM mytable t2
                  WHERE t2.UCN = t1.UCN
                  ORDER BY t2.SUB_ATTRIBUTE_DESC 
                  FOR XML PATH('')
            ), ' ', ' : ')
FROM mytable t1
GROUP BY t1.UCN, t1.FULL_NAME ;
于 2013-03-14T15:12:18.353 回答
1

你的表情如此贴近;问题是你在比较中FULL_NAME比较,没有匹配,因此你的结果是空的。UCNLookupSetJoin

使用类似的东西:

=Join(LookupSet(Fields!UCN.Value
    , Fields!UCN.Value
    , Fields!SUB_ATTRIBUTE_DESC.Value
    , "DataSet1"), ",")

或者:

=Join(LookupSet(Fields!FULL_NAME.Value
    , Fields!FULL_NAME.Value
    , Fields!SUB_ATTRIBUTE_DESC.Value
    , "DataSet1"), " ")

我根据您的数据集对第一个表达式进行了简单的测试,对我有用:

在此处输入图像描述

评论后编辑:

您可以引用 Join 数组中的单个元素,并使用它在单独的列中显示这些元素,使用如下表达式:

=LookupSet(Fields!UCN.Value
    , Fields!UCN.Value
    , Fields!SUB_ATTRIBUTE_DESC.Value
    , "DataSet1")(0)

将表达式末尾的元素编号更改为(1)(2)以获取所需的元素。最终结果:

在此处输入图像描述

我能想到的几件事:

  1. 顺序很重要 - 如果您没有对数据集进行排序,您可能会得到与Join和不一致的结果LookupSet。在数据库或 Tablix 级别订购。

  2. 如果您需要动态列数,不确定这将如何工作,但如果它总是三个(或任何固定数字),您就可以了。

或者,您可以考虑pivot在数据库级别执行查询以获得所需的结果。

于 2013-03-14T16:33:51.347 回答