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 6389 게시물 읽기
No. 6389
sql로 loop처럼 처리하기 가능한지요
작성자
서정탁(thedays)
작성일
2012-07-02 22:35
조회수
8,519

sql문을 통해 해결해야 할 사항이 있는데 이리해봐도 안되고 저리해봐도 안되어

많은 고수님들의 의견 부탁드립니다.

테이블 A

일련번호 순번 값

001 1 100

001 2 50

001 3 40

002 1 80

002 2 50

테이블 B

일련번호 합계

001 200

002 100

 

SQL 쿼리문을 이용해서 처리해야 할 것이 테이블B의 일련번호별 합계를 테이블A의 일련번호에 대한 순번으로

순차적으로 차감해서 계산해야 하는 방식입니다

즉...계산되는 방식이

일련번호 순번 값 합계 차이(합계 - 값)

001 1 100 200(테이블B의 합계) 100

001 2 50 100(차이값) 50

001 3 40 50 (차이값) 10

002 1 80 100(테이블B의 합계) 20

002 2 50 20(차이값) -30

 

도와 주세요...ㅜ.ㅜ

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

 WITH tblA ( seq, odr, val )

AS
(
SELECT '001', 1, 100
UNION ALL SELECT '001', 2, 50
UNION ALL SELECT '001', 3, 40
UNION ALL SELECT '002', 1, 80
UNION ALL SELECT '002', 2, 50
)
, tblB ( seq, summed )
AS
(
SELECT '001', 200
UNION ALL SELECT '002', 100
)
 
, recurA ( seq, odr, val )
AS
(
SELECT tblA.seq, tblA.odr, tblB.summed - tblA.val 
FROM tblA 
INNER JOIN tblB ON tblA.seq = tblB.seq 
WHERE odr = 1
 
UNION ALL
 
SELECT tblA.seq, tblA.odr, recurA.val - tblA.val 
FROM tblA 
INNER JOIN recurA ON tblA.odr = recurA.odr + 1 AND tblA.seq = recurA.seq
)
SELECT * 
FROM recurA 
ORDER BY seq, odr
;
우욱님이 2012-07-03 00:39에 작성한 댓글입니다. Edit

가뭄에 단비 내리듯...많은 도움이 되었습니다

감사합니다.

서정탁(thedays)님이 2012-07-09 16:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6392ms-sql에서 unsigned int는 없나요? [2]
초보
2012-07-06
11228
6391인덱스 생성 [4]
초보
2012-07-03
8053
6390insert 후 idx 값? [1]
이영주
2012-07-03
8573
6389sql로 loop처럼 처리하기 가능한지요 [2]
서정탁
2012-07-02
8519
6388시작번호, 끝번호 등록 프로시저 작성 [1]
정인수
2012-06-28
7381
6387쿼리 변경... [2]
짱가
2012-06-21
8190
6386시퀀스 문자열 증가 (A->B) [1]
초보
2012-06-20
8097
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다