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 4224 게시물 읽기
No. 4224
Sum 을 여러번 하는데 너무 느려요~!!
작성자
최승위(unf333)
작성일
2008-05-26 11:31
조회수
4,414

안녕하세요~


매일 들어와서 도움을 얻다가, 찾는 부분이 없어서


염치 불구하고 글을 남깁니다.


~~


테이블 구성은.. 대략



판매자      판매일          금액         회사

홍길동      2005-04-02     300           회사1      

홍길동      2005-04-03     200           회사3

김태희      2005-04-02     1000         회사2



이렇게 되있구요..



select sum(money) as money  from money Where name = '홍길동' and ( money_day  <  '2008-05-01' and money_day >'2008-04-01')

union

select sum(money)  from money Where name = '홍길동' and ( money_day  <  '2008-06-01' and money_day >'2008-05-01')

and com = '회사1'

union

select sum(money)  from money Where name = '홍길동' and ( money_day  <  '2008-06-01' and money_day >'2008-05-01')

and com = '회사2'

union

select sum(money)  from money Where name =' 홍길동' and ( money_day  <  '2008-06-01' and money_day >'2008-05-01')

and com = '회사3'


아래가 비쥬얼입니다.


sum 을 각 컬럼당 한번씩하고, 셀렉트 4번을 하구요. 


판매자1명씩 나오니까  위에내용 * 판매자 명수 쿼리가 되버리니까..


쿼리 시간이 너무 늦어져서요~


도움좀 부탁드려요.



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

판매자     전달판매금액       이번달판매금액               회사1물건판매금액      회사2..         회사3..  


홍길동               35000                       10000                              2000               4000        4000

김태희               20000                       30000                             10000              20000            0

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

  select name  판매자,

       sum(case when money_day  < '2008-05-01' 

                then money else 0 end) 전달판매금액,  

       sum(case when money_day  >= '2008-05-01' 

                then money else 0 end) 이번달판매금액,

       sum(case when money_day  >= '2008-05-01' and com = '회사1' 

                then money else 0 end)  회사1물건판매금액,

       sum(case when money_day  >= '2008-05-01' and com = '회사2' 

                then money else 0 end)  회사2물건판매금액,

       sum(case when money_day  >= '2008-05-01' and com = '회사3' 

                then money else 0 end)  회사3물건판매금액

  from money 

 where money_day >= '2008-04-01' 

   and money_day  < '2008-06-01'

 group by name

최석준(beatchoi)님이 2008-05-26 11:45에 작성한 댓글입니다.
이 댓글은 2008-05-26 11:47에 마지막으로 수정되었습니다.

답변 정말 감사합니다.

큰도움 되었습니다.

최승위(unf333)님이 2008-05-26 11:48에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4228서브쿼리에서 찾아올 때는 풀 스캔, 키 값 범위 주면 index 를 타는 문제
김기운
2008-05-27
4243
4227같은 table내 데이타를 복사해 새로운 데이타로 만드는 query는? [4]
김기완
2008-05-27
4616
4226가변형에서 ' 의사용법 에 대해서 알고 싶습니다. [1]
이돈규
2008-05-26
4308
4224Sum 을 여러번 하는데 너무 느려요~!! [2]
최승위
2008-05-26
4414
4223오라클 펑션을 MS SQL로 변환하려고 합니다. [1]
질문요
2008-05-23
4975
4222sp_helpdb 로 데이터베이트 리스트를 가져올려고 하는데요. [1]
우왁
2008-05-23
4617
4221쿼리 부탁드립니다(pivot을 쓰면 될까요?) [2]
오라클
2008-05-22
4855
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다