2017-01-26 6 views
0

이 qusetion의라는 점 Control on XML elements nesting using FOR XMLSql for XML : 특정 필드가 특성으로 출력되지 않도록하는 방법?

는 I 출력 변화로부터

<security AccessLevel="5" /> 

<security>5<security/> 

기본적 대신 속성으로 AccessLevel을 표시 싶습니다 그 가치가되도록하려는 것이다 요소 security의 값 이러한 결과를 얻는 방법. 나는 명확성을 위해 링크 된 게시물에서 여기에 예를 복사

DECLARE @Employees table( 
    EmpID int NOT NULL, 
    Name nvarchar(50), 
    Surname nvarchar(50), 
    DateOfBirth date, 
    DepartmentID int, 
    AccessLevel int); 
insert into @Employees values ('1', 'John','Doe','1980-01-31',100,5) 
insert into @Employees values ('2', 'Mary','Rose','1971-02-27',102,3) 
insert into @Employees values ('3', 'Luke','Perry','1995-12-01',104,1) 

select 
    employee.Name, 
    employee.Surname, 
    employee.DateOfBirth, 
    department.DepartmentID, 
    security.AccessLevel -- THIS IS THE INVOLVED FIELD 
from @Employees employee 
join @Employees department on department.DepartmentID = employee.DepartmentID 
join @Employees security on security.AccessLevel = employee.AccessLevel 
for xml auto 

답변

3

내가 attributesxml에서 발생하는 별명이 사용 @을 할 것입니다.

<employee Name="John" Surname="Doe" DateOfBirth="1980-01-31"> 
    <department DepartmentID="100"> 
    <security>5</security> 
    </department> 
</employee> 
<employee Name="Mary" Surname="Rose" DateOfBirth="1971-02-27"> 
    <department DepartmentID="102"> 
    <security>3</security> 
    </department> 
</employee> 
<employee Name="Luke" Surname="Perry" DateOfBirth="1995-12-01"> 
    <department DepartmentID="104"> 
    <security>1</security> 
    </department> 
</employee> 
: 그냥이

SELECT NAME   AS [@Name], 
     Surname  AS [@Surname], 
     DateOfBirth AS [@DateOfBirth], 
     DepartmentID AS [department/@DepartmentID], 
     AccessLevel AS [department/security] 
FROM @Employees 
FOR xml path('employee') 

결과 같은 별명에

뭔가를 @을 추가하지 않는 요소로 accesslevel를 얻으려면