2
첫 번째 XML 파일을 두 번째 형식으로 전송하려는 경우 기본적으로 주된 차이점은 masterBatchNo의 반복 값을 원하지 않는다는 것입니다. 대신 masterBatchNo의 유일한 값을 원하고 다른 속성 하위 노드를 만듭니다. 이 일을하는 방법이 있습니까?SQL 열을 다른 열의 XML 노드로 만들기
첫 번째 XML 파일을 두 번째 형식으로 전송하려는 경우 기본적으로 주된 차이점은 masterBatchNo의 반복 값을 원하지 않는다는 것입니다. 대신 masterBatchNo의 유일한 값을 원하고 다른 속성 하위 노드를 만듭니다. 이 일을하는 방법이 있습니까?SQL 열을 다른 열의 XML 노드로 만들기
for xml path
대신 XML을 구성하는 방법을 제어 할 수 있습니다. 파생 테이블에서 PV_Batch
을 사용하여 중첩 된 XML을 만들고 @
을 사용하여 특성을 만듭니다.
PV_MasterBatch
에서 PV_Batch
에서 생성 된 하위 노드가없는 행을 제외하는 데는 exists
절이 있습니다.
select MB.masterBatchNo as [@masterBatchNo],
(
select B.processStage as [@processStage],
B.processBatchNo as [@processBatchNo]
from PV_Batch as B
where B.masterBatchNo = MB.masterBatchNo and
B.projectid = @varProjectID
for xml path('tempTable'), type
)
from PV_MasterBatch as MB
where MB.stage = @varStage and
exists (
select *
from PV_Batch as B
where B.masterBatchNo = MB.masterBatchNo and
B.projectid = @varProjectID
)
for xml path('PV_Batch'), root('Root')
별칭을 사용하지 않을 때 열이 나오는 테이블을 알아내는 것은 어렵습니다. 테이블 구조를 게시 할 수 있다면 도움이 될 것입니다. –
그들은 본질적으로 하나의 테이블에서오고 있으며, INNER JOIN은 masterBatchNo가 서로 일치 할 때 두 테이블을 조인합니다. –
어떤 테이블에 기본 키가 masterBatchNo입니까? '무대'는 어떤 테이블에서 왔는가? –