하나의 피벗 된 테이블에서 SQL FOR XML 다중 레벨-데이터 그룹화

igorjrr

이것은 여기에 게시 된 질문에서 더 나아갑니다 : link . 제안 된 솔루션이 잘 작동했지만 이제는 더 어려운 시나리오가 있으며 SQL이 세 번째 중첩 .NET을 만들 수 없기 때문에 동일한 솔루션이 적용되지 않습니다 SELECT. 이제 시나리오는 dub태그가 각각 내부에서 반복 될 수 있고 location각각 dub여러 data태그를 포함 할 수 있다는 것 입니다. 예 :

<locations>
  <location>
    <loc name="Country 1" id="1" />
    <dubs>
      <dub name="City 1">
        <data year="1950" value="2.43" />
        <data year="1955" value="2.55" />
      </dub>
      <dub name="City 2">
        <data year="1950" value="5.67" />
        <data year="1955" value="4.42" />
      </dub>
    </dubs>
  </location>
  <location>
    <loc name="Country 2" id="2" />
    <dubs>
      <dub bane="City ABC">
        <data year="1950" value="4.54" />
        <data year="1955" value="42.15" />
      </dub>
    </dubs>
  </location>
</locations>

세 번째 중첩을 시도했지만 SELECT허용되지 않습니다. SQL Fiddle-작동하지 않음

select T.Country as 'loc/@name',
       T.ID as 'loc/@id',
       (
         select [City] as 'dub/@name',
         (
           select 1950 as 'dub/data/@year',
                  T.[1950] as 'dub/data/@value',
                  null,
                  1955 as 'dub/data/@year',
                  T.[1955] as 'dub/data/@value'
           for xml path(''), type
          ) as dub
       ) as dubs
from YourTable as T
for xml path('location'), root('locations'), type

원래 질문에 대한 솔루션을 수정하고 거의 작동하는 다음 쿼리를 생성했습니다. SQL Fiddle-Almost Working

    select T.Country as 'loc/@name',
       T.ID as 'loc/@id',
       (
         select [City] as 'dub/@name',
                 1950 as 'dub/data/@year',
                  T.[1950] as 'dub/data/@value',
                  null,
                  1955 as 'dub/data/@year',
                  T.[1955] as 'dub/data/@value'
           for xml path(''), type
       ) as dubs
from YourTable as T
for xml path('location'), root('locations'), type

그러나 것을 볼 수 있습니다 data태그는 그것의 내부에 분류되지 않는 dub더 - 태그 dub태그가 빈으로 재현되는 name속성 내용. 도움이 필요하세요?

igorjrr

고마워, 개스 퍼, 당신은 매우 도움이되었습니다! (Gasper는 나의 상상의 친구입니다)

아래에서 해결책을 찾았습니다. SQL Fiddle

select Country as 'loc/@name',
       ID as 'loc/@id',
       (
         select [City] as 'dub/@name',
           (
               select 1950 as 'data/@year',
                  [1950] as 'data/@value',
                  null,
                  1955 as 'data/@year',
                  [1955] as 'data/@value'
               from YourTable as D
               where Country = C.Country
               and City = T.City
               for xml path(''), type
             ) as 'dub/datavalues'
         from
         (
           select distinct City
           from YourTable
           where Country = C.Country
         ) as T
         for xml path(''), type
       ) as 'loc/dubs'
from
(
  select distinct Country, ID
  from YourTable
) as C
for xml path(''), root('locations'), type

:)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Oracle SQL 다중 레벨 피벗 그룹

분류에서Dev

공백이 포함 된 데이터의 피벗 테이블에서 값 그룹화

분류에서Dev

다중 레벨 열이있는 Pandas 데이터 프레임의 피벗 테이블

분류에서Dev

SQL : 다른 그룹화 된 테이블에서 테이블 업데이트

분류에서Dev

Excel의 피벗 테이블에서 SQL의 날짜 열을 사용하여이 선택 항목을 그룹화 할 수 없습니다.

분류에서Dev

SQL의 피벗 테이블 데이터

분류에서Dev

동일한 데이터에서 서로 다른 피벗 테이블의 필드 그룹 분리

분류에서Dev

동일한 데이터에서 서로 다른 피벗 테이블의 필드 그룹 분리

분류에서Dev

SQL SERVER에서 피벗 된 테이블을 업데이트하는 방법

분류에서Dev

데이터 프레임을 그룹화하고 피벗 (?)하는 방법

분류에서Dev

데이터 프레임의 열별로 그룹화하고 루프에서 피벗 테이블을 만드는 방법

분류에서Dev

MySql 피벗이 그룹화 된 행을 압축하지 않음

분류에서Dev

SQL의 데이터 피벗

분류에서Dev

값을 기준으로 테이블을 피벗하지만 한 줄에서 다른 줄로 데이터를 그룹화 하시겠습니까?

분류에서Dev

라 라벨 블레이드 다중 선택. 피벗 테이블에서 레코드를 선택하는 방법은 무엇입니까?

분류에서Dev

라 라벨 블레이드 다중 선택. 피벗 테이블에서 레코드를 선택하는 방법은 무엇입니까?

분류에서Dev

R에서 그룹화하는 동안 여러 열의 피벗 테이블

분류에서Dev

그룹화 된 데이터의 다중 인덱스 필터링

분류에서Dev

ggplot을 사용하여 레이블이 다른 그룹화 된 데이터에 대해 하나의 그래프에 두 개의 선 플롯을 플로팅

분류에서Dev

R의 그룹화 된 데이터 프레임에서 큰 데이터 프레임의 다중 분위수 그룹 사용

분류에서Dev

피벗 테이블에서 지정된 태그가있는 모든 기사를 선택하는 SQL 쿼리

분류에서Dev

피벗, 그룹화 또는 집계 데이터 프레임

분류에서Dev

데이터를 그룹화하여 피벗 테이블을 만드는 방법

분류에서Dev

SQL 피벗 테이블을 다른 테이블의 열과 조인 할 때 데이터 중복

분류에서Dev

중복 된 튜플이있는 테이블에서 성으로 SQL 그룹화

분류에서Dev

그룹화 열에서 고유 한 값당 하나의 열을 만들기 위해 테이블 회전 / 피벗

분류에서Dev

별도의 테이블에서 ID 튜플별로 그룹화 된 SQL Server 최대 레코드 값

분류에서Dev

다중 인덱스를 사용하여 피벗 된 데이터 프레임에서 원본 데이터 프레임 가져 오기

분류에서Dev

중복 된 열 (ID)별로 데이터 프레임 피벗

Related 관련 기사

  1. 1

    Oracle SQL 다중 레벨 피벗 그룹

  2. 2

    공백이 포함 된 데이터의 피벗 테이블에서 값 그룹화

  3. 3

    다중 레벨 열이있는 Pandas 데이터 프레임의 피벗 테이블

  4. 4

    SQL : 다른 그룹화 된 테이블에서 테이블 업데이트

  5. 5

    Excel의 피벗 테이블에서 SQL의 날짜 열을 사용하여이 선택 항목을 그룹화 할 수 없습니다.

  6. 6

    SQL의 피벗 테이블 데이터

  7. 7

    동일한 데이터에서 서로 다른 피벗 테이블의 필드 그룹 분리

  8. 8

    동일한 데이터에서 서로 다른 피벗 테이블의 필드 그룹 분리

  9. 9

    SQL SERVER에서 피벗 된 테이블을 업데이트하는 방법

  10. 10

    데이터 프레임을 그룹화하고 피벗 (?)하는 방법

  11. 11

    데이터 프레임의 열별로 그룹화하고 루프에서 피벗 테이블을 만드는 방법

  12. 12

    MySql 피벗이 그룹화 된 행을 압축하지 않음

  13. 13

    SQL의 데이터 피벗

  14. 14

    값을 기준으로 테이블을 피벗하지만 한 줄에서 다른 줄로 데이터를 그룹화 하시겠습니까?

  15. 15

    라 라벨 블레이드 다중 선택. 피벗 테이블에서 레코드를 선택하는 방법은 무엇입니까?

  16. 16

    라 라벨 블레이드 다중 선택. 피벗 테이블에서 레코드를 선택하는 방법은 무엇입니까?

  17. 17

    R에서 그룹화하는 동안 여러 열의 피벗 테이블

  18. 18

    그룹화 된 데이터의 다중 인덱스 필터링

  19. 19

    ggplot을 사용하여 레이블이 다른 그룹화 된 데이터에 대해 하나의 그래프에 두 개의 선 플롯을 플로팅

  20. 20

    R의 그룹화 된 데이터 프레임에서 큰 데이터 프레임의 다중 분위수 그룹 사용

  21. 21

    피벗 테이블에서 지정된 태그가있는 모든 기사를 선택하는 SQL 쿼리

  22. 22

    피벗, 그룹화 또는 집계 데이터 프레임

  23. 23

    데이터를 그룹화하여 피벗 테이블을 만드는 방법

  24. 24

    SQL 피벗 테이블을 다른 테이블의 열과 조인 할 때 데이터 중복

  25. 25

    중복 된 튜플이있는 테이블에서 성으로 SQL 그룹화

  26. 26

    그룹화 열에서 고유 한 값당 하나의 열을 만들기 위해 테이블 회전 / 피벗

  27. 27

    별도의 테이블에서 ID 튜플별로 그룹화 된 SQL Server 최대 레코드 값

  28. 28

    다중 인덱스를 사용하여 피벗 된 데이터 프레임에서 원본 데이터 프레임 가져 오기

  29. 29

    중복 된 열 (ID)별로 데이터 프레임 피벗

뜨겁다태그

보관