我的表格有PKey
,FKey
,LineNum
和TextLine
。
在我的表格中,我有FKey
的多个结果。这是1对多的关系。
我想要做的是将与TextLine
匹配的FKey
连接成一行。 (原因是我们正在从旧的COBOL数据库转换为T-SQL,并将信息传输到具有不同结构的新数据库,其中这些“注释”将全部由单个字段处理)
我的结束查询将如下所示:
SELECT Fkey, Line1 + Line2...,
FROM Table1
问题在于行数不一致。另外,我试图避免任何动态查询,因为我希望未经训练的/基本用户能够修改和自定义此查询。有没有办法做到这一点?
答案 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列会有一些大小限制,因此如果某些外键有数千行,这可能不适用。