1
嗨,我們有一個遺留代碼,我們正試圖修改並試圖擺脫「for XML」。當前碼是如下xml刪除sql錯誤
Select
a.columnidfk as columnid,
tvs.columnversion as columnversion,
a.newcolumnId as newcolumnid,
(Select
at.columnTrackingId as columntrackingid,
at.newcolumnIdFk as newcolumnid,
at.IDBSIdFk as idbid,
i.Name as iname,
IsNull(convert(varchar,at.colidbdate,101),'') as colidbdate,
IsNull(convert(varchar,at.colidbdate2,101),'') as colidbdate2,
IsNull(at.colReason, '') as colReason,
IsNull(d.DispositionText, '') as DispositionText,
at.status as status
From columnTracking at
Left Outer Join LkIDBs i on at.IDBSIdFk = i.IDBSId
left outer join LkDisposition d On at.[colDecisionIdFk] = d.DispositionId
Where at.status in('Active','Inactive') and at.newcolumnIdFk = a.newcolumnId and (i.status in ('Active','Inactive') OR i.status is null) and (d.status='Active' or d.status is null)
for Xml path('columntracking'), type)
From tablecolumns a
Left Outer Join columnVersions tvs on a.columnversionidfk = tvs.columnversionid Where
a.columnVersionIdFk in
(Select columnVersionId From columnVersions tv
Inner Join tabcolumns t On tv.colIdFk = t.colId
Where t.TicketNo = @TicketNo)
order by a.TicketVersionIdFk , a.assessmentid
For Xml path('columntab'), Root('columns')
當我刪除 「用於XML路徑( 'columntracking'),式」 和「用於XML路徑( 'columntab'),根( '列') 「即時提示以下錯誤:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
請指教!
XML的父節點和孩子,如果你刪除XML的路徑,你要輸出爲孩子什麼元素值,如錯誤所示,每個在columntab上會有多行。刪除xml路徑後面的用例是怎樣的? .. – radar
'SELECT ... FOR XML PATH ...'產生一個XML格式的字符串,每行一個。刪除FOR XML,它會生成一個表。所以基本上你正試圖在一排中嵌套一張桌子!這是無效的。 –
您的權利我需要列表格式而不是xml格式的列。我試圖將第一個xml輸出代碼放置在父代碼的左外連接中,但似乎會產生兩倍的no行數。有沒有其他辦法可以做到這一點? –