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 5702 게시물 읽기
No. 5702
반복쿼리를 하나의 쿼리로...??
작성자
궁금이
작성일
2010-07-20 01:32
조회수
7,264

 

title   value

---   -----

A   1111

B   222

C  333

Query1 의 결과과 다음과 같고

title 이 같고 value 값이 틀린 쿼리 7 개를 돌려서

프로그램에서 7 개 쿼리 값을 직접 합치고 있습니다

 

tile   value1   value2   value3   value4   value

---- ---------- ---------- ----------   ----------   ----------

A   111    222    3333   4444   55     666

B   222   333     33      44      55      777

C  222    333   44    55       22     55

 

 

7 개의 쿼리를 하나의 쿼리로 만들 수 있을까요??

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

 가능은 합니다만, 7개의 다른 쿼리라는게 진짜 다른 쿼리인지는 확인해보세요.^^;;

보통 같은 쿼리인데 다른 쿼리라고 생각되는 경우가 많습니다.

 


select  name as Title, v as value1,v2 as value2 from table_name

union all

select ts as Title, cnt as value1, t_cnt as value2 from table_name 

 

과 같이 union all 로 쿼리끼리의 결과를 합쳐가져올 수 있습니다.

컬럼이름이 다른건 as 로 이름을 맞춰주시고요. 

cReAm(catz)님이 2010-07-20 09:14에 작성한 댓글입니다.

MSSQL 공부하고 있는 사람입니다.

공부삼아 만들어봤는데 맞는지 모르겠네요..

틀린부분 있으면 지적 부탁드립니다.

select R.TITLE, R.CODE
  into #tmp
from
(
select 'A' TITLE, '111' AS CODE UNION ALL
select 'A' TITLE, '222' AS CODE UNION ALL
select 'A' TITLE, '333' AS CODE UNION ALL
select 'A' TITLE, '444' AS CODE UNION ALL
select 'A' TITLE, '555' AS CODE UNION ALL
select 'A' TITLE, '666' AS CODE UNION ALL
select 'B' TITLE, '111' AS CODE UNION ALL
select 'B' TITLE, '222' AS CODE UNION ALL
select 'B' TITLE, '333' AS CODE UNION ALL
select 'B' TITLE, '666' AS CODE UNION ALL
select 'C' TITLE, '222' AS CODE UNION ALL
select 'C' TITLE, '333' AS CODE UNION ALL
select 'C' TITLE, '555' AS CODE
) R

select x.title
  , MAX(value1) value1
  , MAX(value2) value2
  , MAX(value3) value3
  , MAX(value4) value4
  , MAX(value5) value5
  , MAX(value6) value6
  , MAX(value7) value7
  from(
  select a.title
   , (CASE WHEN a.seq = 1 then a.code else '' end) value1
   , (CASE WHEN a.seq = 2 then a.code else '' end) value2
   , (CASE WHEN a.seq = 3 then a.code else '' end) value3
   , (CASE WHEN a.seq = 4 then a.code else '' end) value4
   , (CASE WHEN a.seq = 5 then a.code else '' end) value5
   , (CASE WHEN a.seq = 6 then a.code else '' end) value6
   , (CASE WHEN a.seq = 7 then a.code else '' end) value7
    from(
    select title
      , code
      , row_number() over(partition by title order by title)  as seq
      from #tmp
      ) A
    ) X
 group by x.title

agoodman99님이 2010-07-29 11:06에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5706informix 7.3 에서 MSSQL2008로 데이타 가져오기 [1]
안수완
2010-07-23
6283
5704이런 경우엔 어떻게 처리 해야할까요. [1]
sql초보
2010-07-21
6341
5703에디션 선택 문의 드립니다. [1]
최윤호
2010-07-20
6029
5702반복쿼리를 하나의 쿼리로...?? [2]
궁금이
2010-07-20
7264
57002008에서 메모리 사용량
2010-07-15
6819
5699별칭컬럼의 값의 양수/음수 합계를 구할 수 있을까요. [1]
라라라라라
2010-07-10
8176
5698테이블명을 파라메터로 받는 정적쿼리 [2]
조중규
2010-07-10
7681
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다