【发布时间】:2016-07-15 11:34:56
【问题描述】:
我有一个每个键有一行的主表和一个每个键有很多行的详细表,其中一个序列字段有一个描述字段,我需要连接在一起并为每个键创建一行。我的代码可以很好地执行此操作,但详细数据行没有以正确顺序连接的数据。数据以 Excel 电子表格的形式提供给我,我使用导入向导将数据添加到数据库中。由于详细数据中的顺序不正确,我添加了一个子选择来按键和序列号对数据进行排序,该序列号是 STUFF WITH XML PATH 的输入。我仍然以错误的顺序获取数据。如果我先对电子表格中的数据进行排序,然后将其加载到数据库中,它就可以正常工作。我真的需要它动态工作,因为我想将它分发给我的团队,我们可以将它用于不同的表。关于为什么带有 STUFF FOR XML PATH 的子选择不起作用的任何想法?我怎样才能做我需要的?
这是我的代码:
SELECT pic, pisc, piin
, STUFF((SELECT ' ' + P.PIIDTA FROM PI115AP P
Where P.PIC =B.PIC
and P.PISC = B.PISC
and P.PIIN = B.PIIN FOR XML PATH(''), type
).value('.', 'nvarchar(max)'),1,1,'') As CombinedDetail
From
( select TOP 100 PERCENT
pic, pisc, piin, piisn, piidta
from PI115AP
order by pic, pisc, piin, piisn) B
Group By B.PIC, B.pisc, B.piin
谢谢!
【问题讨论】:
-
能否请您展示一下您目前提供的查询是什么以及您的预期输出是什么。
-
#TheGameiswar - 只有在连续行之间有行时才会出现此问题。详细数据超过 15,000 行,我和
-
对不起#TheGameiswar - 只有在连续行之间有行时才会出现此问题。例如,我可以拥有 200 072 00002 1 个 PERM。按; 7 牢不可破的按钮 e01 006 00003 1 SOME TEXT 更多行... 200 072 00002 2 FRONT;两个 POCKETS,一个 FALSE 和更多行组合的数据将具有 seq 3、seq1、seq5,这样排序。结果应该是 seq 1 数据,seq2 数据,依此类推。我在添加评论上的空间有限,所以我已经浓缩了这一点,我认为这是有道理的。
-
您能否提供测试脚本来创建和加载与当前和预期输出一起使用的表?
标签: sql sql-server tsql for-xml-path