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
운영게시판
최근게시물
Oracle Q&A 39341 게시물 읽기
No. 39341
이런거 가능한가요?
작성자
나재호(jepyros)
작성일
2012-03-13 11:20ⓒ
2012-03-13 13:39ⓜ
조회수
5,061
제품코드 일자 입고수량 출고수량
A 20120301 100 50
A 20120302 20 80
A 20120303 40 10

SELECT 'A' AS PROD, '20120301' AS GDATE , 100 AS INCNT, 50 AS OUTCNT FROM DUAL UNION
SELECT 'A' AS PROD, '20120302' AS GDATE , 50  AS INCNT, 80 AS OUTCNT FROM DUAL UNION
SELECT 'A' AS PROD, '20120303' AS GDATE , 40  AS INCNT, 10 AS OUTCNT FROM DUAL

위와 같은 데이타를

기초재고 + 입고 - 출고 = 마감재고 이고

전날에 마감재고를 다음날짜에 기초재고로 나오게 sql문을 작성할수 잇나요?

아래와 같은 형식으로

제품코드 일자 기초재고 입고수량 출고수량 마감재고
A 20120301 0 100 50 50
A 20120302 50 50 80 20
A 20120303 20 40 10 50

많이 쓰일거 같은데....

아시는분 부탁드립니다.

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

 

이전 마감재고를 가져오는건 

 

lag 를 사용하시면 됩니다. 

감기 때문에 ㅡ,.ㅡ;; 

자세한건 생략이요~ 

cReAm(catz)님이 2012-03-13 15:46에 작성한 댓글입니다.

with t as(
select 'A' as code, '20120301' as ddate, 100 as in_qty, 50 as out_qty from dual union all
select 'A', '20120302', 50, 80  from dual union all
select 'A', '20120303', 40, 10   from dual )
select a.code, a.ddate, lag(a.close_qty, 1, 0) over (order by a.ddate ) base_stock,
       a.in_qty, a.out_qty, a.close_qty
  from (
select code, ddate,
       in_qty, out_qty,
              sum(in_qty) over(order by ddate range between unbounded preceding and current row)  -
       sum(out_qty) over(order by ddate range between unbounded preceding and current row)  close_qty
  from t) a
order by ddate

 

다른 분석함수를 사용해봐도 제 머리로는 결국 인라인뷰를 한번 써야되더군요.

여기까지가 제 한계네요.

다른 분들이 더 좋은 답을 주실듯

dldkan님이 2012-03-13 16:29에 작성한 댓글입니다. Edit

WITH t(prod, gdate, incnt, outcnt) AS
(
SELECT 'A', '20120301', 100, 50 FROM dual
UNION ALL SELECT 'A', '20120302',  50, 80 FROM dual
UNION ALL SELECT 'A', '20120303',  40, 10 FROM dual
)
SELECT prod   제품코드
     , gdate  일자
     , SUM(incnt - outcnt) OVER(PARTITION BY prod ORDER BY gdate)
     - (incnt - outcnt) 기초재고
     , incnt  입고수량
     , outcnt 출고수량
     , SUM(incnt - outcnt) OVER(PARTITION BY prod ORDER BY gdate) 마감재고
  FROM t
;

마농(manon94)님이 2012-03-13 17:23에 작성한 댓글입니다.

흠... 그렇군요..

감사합니다..

유용하게 쓰겠습니다

나재호(jepyros)님이 2012-03-14 14:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39345flashback 기능에 대해 [1]
김충관
2012-03-14
3885
39344SQL DEVELOPER 디버깅 안되는 문제
박주영
2012-03-14
3984
39343TNS-12502, TNS-12560, TNS-00530 오류 문의드립니다. [2]
김홍찬
2012-03-13
10363
39341이런거 가능한가요? [4]
나재호
2012-03-13
5061
39338Jeus에서 Clob가 4000바이트 이하로 밖에안들어갑니다..
김민호
2012-03-10
5052
39337오라클 shutdown immediate 반응 없음 [1]
쿼리OTL
2012-03-10
8825
39335TO_CHAR()함수 문제 [1]
유상구
2012-03-08
5951
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다