2016-03-15 46 views
0

我有一个表有PKeyFKey,LineNumTextLine连接所有项目与匹配的FKey的

在我的表中,我有来自FKey的多个结果。这是一对多的关系。

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

我的最终查询会是这个样子:

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

的问题是,有行的非一致的号码。另外,我试图避免任何动态查询,因为我想让未受过培训的/基本用户能够修改和自定义此查询。有没有办法做到这一点?

回答

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列中的某些尺寸的限制,所以如果你有成千上万行的这个可能不适用一些外键。

+0

我想我从来没有超过5-6行,所以它不应该是一个问题。感谢您的建议! – phroureo

相关问题