채택완료

mssql 쿼리 질문입니다.

2017-10-17 (화) 18:10:30 2,577

테이블 A에

aaa bbb ccc 라는 컬럼이 있습니다

데이터 호출 할 때

aaa1 bbb1 ccc1 aaa2 bbb2 ccc2

aaa3 bbb3 ccc3 aaa4 bbb4 ccc4

.

.

이런식으로 한 열에 2개씩 데이터를 가져오는 쿼리를 어떻게 짜야 할까요?

|

답변 4개 / 댓글 3개

채택된 답변
+20 포인트
2017-10-17 (화) 18:41:23

쿼리입니다. Primary Key : seq

다음의 글을 참고 하였습니다. https://stackoverflow.com/a/8673125

Copy
WITH T AS (
  SELECT
    rownum = ROW_NUMBER() OVER (ORDER BY seq),
    aaa, bbb, ccc
  FROM A
)
SELECT
  A.aaa, A.bbb, A.ccc, T.aaa, T.bbb, T.ccc
FROM A INNER JOIN T on T.rownum = A.rownum + 1

WHERE A.rownum % 2 = 1

답변에 대한 댓글 2개

A는 alias 안줘도 되는건가요?
2017-10-18 (수) 11:51:13
Alias 는 있어도 되고, 없어도 되는 성격입니다.

본문에서 테이블 'A'라고 예를 들어서 그에 맞춘 것입니다.

실제 테이블 이름이 길다면..

해당 테이블의 alias 를 't1', 'a' 등드으로 주면 됩니다. 조인 조건시에는 alias 로 맞춰주어야 되고요.

WITH T AS (
SELECT
rownum = ROW_NUMBER() OVER (ORDER BY seq),
aaa, bbb, ccc
FROM A
)

에서 with() 절은 임시테이블인데 T 로 alias? 를 준 것이라고 보면 됩니다.

이런 쿼리는 왜 필요하죠?

설계 오류

크리스탈 리포트 쓰시나 보네요 ^^

한열에 두개를 하려는 의도는 모르겠지만 데이터 출력후 데이터 나열방식으로 처리하는게 좋을듯 합니다.

답변에 대한 댓글 1개

리포팅 툴을 이용하여 쿼리를 짜는 중인데 같은 데이터를 가로로 2번씩 뿌려주거든요

답변을 작성하려면 로그인이 필요합니다.