0
我有2个表TableA
和TableB
,这里是两个表SQL查询来合并基于序列行定义
OrderNumber LineSEQNo SequenceNumber CommentText
2145106 0000000001 000 ABB -
2145106 0000000001 001 2" AL. pole 7'8"
而表B如下
SalesOrderNumber LineSEQNo desc1 desc2
2145106 0000000001 ORDER DIDN't NULL
2145106 0000000002 ABB BCC
2145106 0000000003 NULL Customer did NOT get any.
的数据现在我想从TableB
输出..我的意思是输出应与TableB
相同。
- 将会有一个
LineSEQNo
(不同的)每行表 TableB.LineSEQNo
将检查TableA
为LineSEQNo
。如果它存在于TableA
中,那么将显示该LineSEQNo
的SequenceNumber
并且基于序列将CommentText
合并成一行。- 如果
LineSEQNo
不TableA
,然后desc1
和desc2
存在将串联为LineSEQNo
所以输出应该是这样的:
2145106 0000000001 ABB - 2" AL. pole 7'8"
2145106 0000000002 ABB BCC
2145106 0000000003 Customer did NOT get any.
希望我清楚。
现在的解决方案唯一的解决办法是,在我这种即将为WHILE
环..
有没有其他办法可以没有环这个期望的结果?
谢谢你的帮助一切工作都很完美,除了TABLE A ..的文本已经与出现了,那么评论 CommentText>? –
Mahajan344
@spenzo。 。 。我修复了'for xml path()'。无可否认,我倾向于使用'('')'。但是,正确的方法是分配一个类型并获取值。请注意,如果这是你的字段的类型,你应该使用'nvarchar()'。这也可以防止诸如“&”被转入“&”之类的怪异情况。 –
@Spenzo。 。 。如意编程造成的一个错误。我一直认为'TYPE'是'PATH'结构的一个“参数”。实际上,它是“FOR XML PATH”的修饰符。前者总是让我搞不清语法,直到我查找它,然后查找它,然后才正确。 –