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 4576 게시물 읽기
No. 4576
각 계정별 계산값을 구하고 싶습니다.
작성자
쿼리가
작성일
2008-12-18 11:00
조회수
5,903

MS SQL 2005입니다.


구분 년월 계정 금액
예산 2008-01 식비 200000
예산 2008-01 교통비 100000
예산 2008-02 식비 220000
예산 2008-02 교통비 120000
지출 2008-01 식비 220000
지출 2008-01 교통비 150000
지출 2008-02 식비 180000
지출 2008-02 교통비 50000
... ... ... ...

이런 쿼리 결과가 있습니다.


이 결과를 가지고 월별 계정별 예산-지출을 구해서 Row에 추가하고 싶습니다.

최종결과는 아래처럼 나오게 말이죠..


년월 계정 구분 금액
2008-01 식비 예산 200000
2008-01 식비 지출 220000
2008-01 식비 예산-지출 -20000
2008-01 교통비 예산 100000
2008-01 교통비 지출 150000
2008-01 교통비 예산-지출 -50000
2008-02 식비 예산 220000
2008-02 식비 지출 180000
2008-02 식비 예산-지출 40000
... ... ... ...


쉬울듯 애매하네요... 미리 답변 감사드립니다..^^

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

 2005이시면 WITH ROLLUP 을 이용하시면 될듯 합니다. 

rollup을 쓰게 되면 그룹으로 잡은 부분의 부분 소계 및 총 합계 까지 나오게 됩니다.
이 부분이 필요 없으시다면 각 컬럼의 값이  null 이 아닌것을 조건으로 주시면 됩니다.



with test
as(
select '예산' 구분,'2008-01' 년월,'식비'  계정  ,  200000 금액 union all
select '예산' ,'2008-01' ,'교통비' , 100000 union all
select '예산' ,'2008-02' ,'식비'   , 220000 union all
select '예산' ,'2008-02' ,'교통비' , 120000 union all
select '지출' ,'2008-01' ,'식비'   , 220000 union all
select '지출' ,'2008-01' ,'교통비' , 150000 union all
select '지출' ,'2008-02' ,'식비'   , 180000 union all
select '지출' ,'2008-02' ,'교통비' , 50000  )

select   isnull(년월,'총합계') 년월
       , isnull(계정,'월소계') 계정
       , isnull(구분,'예산-지출') 구분 
       , (case when 구분 = '지출' then ABS(금액) else  금액   end ) 금액
  from (  select  년월
      , 계정
      , convert(varchar(20),구분)  구분
      , sum(case when 구분 = '예산' then  금액  else 금액 * -1 end ) as 금액
     from test
     GROUP BY 년월 , 계정 ,구분  WITH ROLLUP
  ) r

 [ where 년월 is not null and 계정 is not null


 ]

zz님이 2008-12-18 13:53에 작성한 댓글입니다.
이 댓글은 2008-12-18 13:59에 마지막으로 수정되었습니다. Edit

감사합니다.


또 하나 배우고 가네요 ^^;

쿼리가님이 2008-12-18 14:35에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4581sql튜닝 부탁드립니다.ㅠㅠ [2]
sql
2008-12-23
5060
4580mssql 익스포트시 IDENTITY .... [3]
홍길동
2008-12-19
5941
4577StoredProcedure 에서 테이블 생성 [1]
나니
2008-12-18
5988
4576각 계정별 계산값을 구하고 싶습니다. [2]
쿼리가
2008-12-18
5903
4575MS-SQL 데이터를 오라클에 넣는중인데..자꾸 오류가 나네요.
이정훈
2008-12-17
6541
4574ms-sql 에서도 바인드 변수 사용 가능한가요?
짜집기
2008-12-17
6515
4573WHERE 절에서 IN과 SELECT의 차이 [1]
MSSQL
2008-12-17
5440
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다