재 미 있 는 SQL 다 중 데이터 조합
첫 번 째 표 에서 두 번 째 표 형식의 데 이 터 를 조회 해 야 합 니 다.인터넷 에서 조회 한 후에 아래 의 SQL 을 쓸 수 있 습 니 다
select * from userino
SELECT * FROM(
SELECT DISTINCT userpart
FROM userino
)A
OUTER APPLY(
SELECT
[usernames]= replace(replace(replace((SELECT username as value FROM userino N
WHERE userpart = A.userpart order by n.username asc FOR XML AUTO),'"/><N value="','/')
,'<N value="',''),'"/>','')
)N
OUTER APPLY(
SELECT
[username_cns]= replace(replace(replace((SELECT username_cn as value FROM userino M
WHERE userpart = A.userpart order by m.username asc FOR XML AUTO),'"/><M value="','/')
,'<M value="',''),'"/>','')
)M
SQL 을 분석 해 보 겠 습 니 다.모두 사용 한 점 은 OUTER APPLY,FOR XML AUTO 입 니 다.SQL Server 에 대해 깊이 연구 하지 않 았 기 때문에 OUTER APPLY 는 SQL 2005 에서 지원 하기 시작 한 조회 방법 으로 연결 조회 와 유사 하 게 두 개의 조회 결 과 를 연결 하 는 것 이다.그러나 특이 한 것 은 OUTER APPLY 를 사용 하면 Apply 뒤의 조회 에서 앞에서 얻 은 조회 결 과 를 사용 할 수 있다 는 것 이다.예 를 들 어
select * from
(select * from userino) A
cross join (select username from userino
where username = A.username )B
select * from
(select * from userino) A
join (select username from userino ) B on a.username = b.username
select * from
(select * from userino) A
OUTER APPLY (select username from userino
where username = A.username ) B
첫 번 째 SQL 은 분명히 틀 렸 습 니 다.두 가지 이유 가 있 습 니 다.1.Cross Join 은 원래 무조건 적 인 것 입 니 다.2.SQL Server 는 다음 과 같은 오류 가 발생 할 수 있 습 니 다.The multi-part identifier"A.username"could not be bound.조건 이 있 는 Join 조 회 는 원래 이렇게 쓰 여 있 지 않 습 니 다.두 번 째 SQL 같은 모습 으로 써 야 합 니 다.사실 이렇게 쓰 는 것 은 제3 조 SQL 에서 Outer apply 를 사용 하여 실현 하 는 효과 와 같 지만 Outer Apply 는 다음 과 같은 효 과 를 실현 할 수 있 습 니 다
select * from
(select * from userino) A
OUTER APPLY (select [value] = a.username+'test' ) B
이것 은 join 을 직접 사용 하 는 것 이 좀 번 거 로 울 것 같 습 니 다.위의 예 는 의미 가 없 을 수도 있 습 니 다.사실 SQL 2005 에서 Apply 연결 방법 을 제시 한 것 은 주로 연결 조회 에서 실 행 된 검색 어 를 사용 하기 위 한 것 이다.결 과 는'OUTER APPLY'를 제외 하고 SQL Server 에 CROSS APPLY 도 있다.그 차이 점 은 Null 값 의 처리 에 있어 FOR XML AUTO 는 주로 SQL 의 검색 결 과 를 XML 구문 으로 직접 되 돌려 주 는 데 사용 된다.For Xml 는 auto 외 에 RAW 와 EXPLICIT 도 있다.자세 한 내용 은'슈퍼 심 플:FOR XML AUTO 를 사용 하여 XML 출력 을 제어 합 니 다'가 글 에서 처음에 제시 한 SQL 문 은 위의 두 가지 특성 을 사 용 했 습 니 다.먼저 Outer Apply 를 사용 하여 userpart 를 사용 하여 그룹 을 나 누 는 것 과 유사 한 효 과 를 실현 하고 각 userpart 중의 user 를 각각 선별 한 다음 에 선별 한 결과 가 여러 줄 이기 때 문 입 니 다.그래서 for xml 를 사용 하여 여러 줄 의 데 이 터 를 xml 로 연결 하고 마지막 으로 xml 를 분리 합 니 다............................................................................
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.