database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6774 게시물 읽기
No. 6774
select절 스칼라서브쿼리 반환되는 컬럼이 여러개일때 어떻게 하면 좋을까요?(다중컬럼)
작성자
cReAm(catz)
작성일
2013-12-11 18:43ⓒ
2013-12-12 09:34ⓜ
조회수
10,624

 select top 30  a.*

, (select top 1 col1 from tableb b where a.id = b.pid order by id desc) as col1

 , (select top 1 col2 from tableb b where a.id = b.pid order by id desc) as col2

, (select top 1 col3 from tableb b where a.id = b.pid order by id desc) as col3

, (select top 1 col4 from tableb b where a.id = b.pid order by id desc) as col4

from tablea 

where 불라불라 

order by 불라불라

;

 

이런 식입니다. 오라클의 경우라면 스칼라서브쿼리 부분을 

(select col1 || '|' ||  col2 || '|' ||  col3 || '|' || col4 from tableb where a.id = b.id  and b.id ) 

뭐 이런 식으로 해서 

 

컬럼간 구분자인 '|' 를 정규식을 이용해서 제거하여 컬럼을 추출해낼텐데

sql server 2008 r2 에선 마땅한 방법이 떠오르지 않내요. 

 

top 1 order desc 조건 때문에 left outer join 하기도 미묘한 상황입니다. 

 

이 글에 대한 댓글이 총 3건 있습니다.

어차피 질문에 스키마도 없으니 제 맘대로 해석하면 대충 이렁거 아녔을까...

 

 
WITH tablea( id, col )
AS
(
SELECT 1, 'A'
UNION ALL SELECT 2, 'B'
)
, tableb( id, pid, col1, col2, col3, col4 )
AS
(
SELECT 1, 1, 'a', 'b', 'c', 'd'
UNION ALL SELECT 2, 1, 'b', 'c', 'd', 'e'
)
SELECT TOP (30) aa.*, bb.*
FROM tablea AS aa
OUTER APPLY ( 
SELECT TOP (1) col1, col2, col3, col4
FROM tableb AS kk
WHERE aa.id = kk.pid
ORDER BY id DESC
) AS bb
;
 
우욱님이 2013-12-12 09:05에 작성한 댓글입니다.
이 댓글은 2013-12-12 09:13에 마지막으로 수정되었습니다. Edit

 

select top 1 col1 from tableb b where a.id = b.pid order by b.id desc

인데 빼먹었내요. 

b.id 입니다.^^

b.pid 가 a.id 와 join 하면 여러개가 나오는데 

그 중에 b.id 기준으로 가장 높은것 한개만 가져오는거네요. 

 

cReAm(catz)님이 2013-12-12 09:13에 작성한 댓글입니다.
이 댓글은 2013-12-12 09:13에 마지막으로 수정되었습니다.

 오오 우욱님 고맙습니다.^^

outer apply  라니 좋은거 배웠내요 ! 

 

cReAm(catz)님이 2013-12-12 09:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6777게시물 공지사항(인덱스) 어떻게 하시나요? [6]
cReAm
2013-12-16
8864
6776데이터의 부분만 update 가능한가요? [1]
김우성
2013-12-14
7987
6775열을 행으로 바꾸는 방법좀 알려주서요 [4]
이남현
2013-12-12
10939
6774select절 스칼라서브쿼리 반환되는 컬럼이 여러개일때 어떻게 하면 좋을까요?(다중컬럼) [3]
cReAm
2013-12-11
10624
6773이게 가능할까요? [2]
궁금
2013-12-10
8018
6771데이터 레코드 양이 많을시 select 등 쿼리 속도 [4]
질문
2013-12-09
10314
6770자답입니다. ^ㅡ^ [3]
wolfre
2013-12-09
8002
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다