이 샘플을 절대적으로 필요한 최소값으로 줄였습니다. 그래서 나는 그것이 의미가 없다는 것을 알고 있습니다 :-)
다음 쿼리를 사용하여 테이블에서 XML을 선택할 수 있습니다.
select id as [Direction/@Id],
direction as [Direction]
from devicepdo
for xml path('')
결과는 다음과 같습니다.
<Direction Id="1">I</Direction>
<Direction Id="2">O</Direction>``
<Direction Id="3">I</Direction>
<Direction Id="4">O</Direction>
....
열 방향에는 항상 I 또는 O가 포함되며 열 값에 따라 둘러싸는 XML 태그를 변경하고 싶습니다.
내 결과는 다음과 같습니다.
<In Id="1">I</In>
<Out Id="2">O</Out>``
<In Id="3">I</In>
<Out Id="4">O</Out>
....
"AS"절에서 변수 나 열을 사용하려는 모든 시도가 실패했습니다.
내 쿼리 에서 "as [ Direction / @ Id]" 의 " Direction " 은 열 값에 따라 가변적이어야합니다.
이것이 가능한가? 힌트 나 아이디어가 있습니까?
모든 속성이 null이고 내용이 null이면 태그가 생성되지 않습니다. 이 사실을 사용하여 각 행의 값에 따라 다른 유형의 태그를 생성 할 수 있습니다.
select
-- If direction is I then generate an In tag
case when direction = 'I' then id else null end as [In/@Id],
case when direction = 'I' then direction else null end as [In],
-- If direction is O then generate an Out tag
case when direction = 'O' then id else null end as [Out/@Id],
case when direction = 'O' then direction else null end as [Out]
from devicepdo
for xml path('')
사실상 가능한 모든 태그에 대한 표현식이 있지만 태그 유형이 바람직하지 않은 행의 경우 case
문을 사용하여 표현식을 null로 만듭니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다