使用匹配的FKey连接所有项目

时间:2016-03-15 17:59:56

标签: tsql

我的表格有PKeyFKeyLineNumTextLine

在我的表格中,我有FKey的多个结果。这是1对多的关系。

我想要做的是将与TextLine匹配的FKey连接成一行。 (原因是我们正在从旧的COBOL数据库转换为T-SQL,并将信息传输到具有不同结构的新数据库,其中这些“注释”将全部由单个字段处理)

我的结束查询将如下所示:

SELECT Fkey, Line1 + Line2..., 
FROM Table1

问题在于行数不一致。另外,我试图避免任何动态查询,因为我希望未经训练的/基本用户能够修改和自定义此查询。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作以将所有数据放在一行中:

select 
    t.FKey,
    STUFF((SELECT ',' + textline
            from Table1 where FKey = t.FKey
              FOR XML PATH('')), 1, 1, '') as ConcatTextLines
from 
    Table1 t
group by t.FKey

ConcatTextLines列会有一些大小限制,因此如果某些外键有数千行,这可能不适用。