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 41968 게시물 읽기
No. 41968
쿼리 좀 도와주세요. 도저히 못 구하겠어요
작성자
김진수
작성일
2023-08-11 18:14ⓒ
2023-08-13 11:49ⓜ
조회수
882

SELECT *

FROM (

SELECT 'A' AS FLAG, 1500 AS CAL FROM DUAL UNION ALL

SELECT 'B' AS FLAG, 60 AS CAL FROM DUAL UNION ALL

SELECT 'C' AS FLAG, 30 AS CAL FROM DUAL UNION ALL

SELECT 'D' AS FLAG, 200 AS CAL FROM DUAL UNION ALL

SELECT 'E' AS FLAG, 0 AS CAL FROM DUAL UNION ALL

SELECT 'F' AS FLAG, 250 AS CAL FROM DUAL UNION ALL

SELECT 'G' AS FLAG, 330 AS CAL FROM DUAL

)

;

 

E = A - D - F

950 = 1500 - 200 - 250

어떻해 하면 E에 1050을 채워 넣을수 있을까요

결과
A    1500
B    60
C    30
D    200
E    1050
F    250
G    330

 

고수님들 좀 알려주세요. 하루종일 했는데 답을 못 구했어요.ㅠㅠ

이 글에 대한 댓글이 총 3건 있습니다.
WITH t AS
(
SELECT 'A' flag, 1500 cal FROM dual
UNION ALL SELECT 'B',  60 FROM dual
UNION ALL SELECT 'C',  30 FROM dual
UNION ALL SELECT 'D', 200 FROM dual
UNION ALL SELECT 'E',   0 FROM dual
UNION ALL SELECT 'F', 250 FROM dual
UNION ALL SELECT 'G', 330 FROM dual
)
-- 1. 분석함수
SELECT flag
     , CASE flag WHEN 'E'
       THEN MIN(DECODE(flag, 'A', cal)) OVER()
          - MIN(DECODE(flag, 'D', cal)) OVER()
          - MIN(DECODE(flag, 'F', cal)) OVER()
       ELSE cal END cal
  FROM t
 ORDER BY flag
;

WITH t AS
(
SELECT 'A' flag, 1500 cal FROM dual
UNION ALL SELECT 'B',  60 FROM dual
UNION ALL SELECT 'C',  30 FROM dual
UNION ALL SELECT 'D', 200 FROM dual
UNION ALL SELECT 'E',   0 FROM dual
UNION ALL SELECT 'F', 250 FROM dual
UNION ALL SELECT 'G', 330 FROM dual
)
-- 2. MODEL --
SELECT *
  FROM t
 MODEL
 DIMENSION BY (flag)
 MEASURES (cal)
 RULES (cal['E'] = cal['A'] - cal['D'] - cal['F'])
 ORDER BY flag
;
마농(manon94)님이 2023-08-16 01:15에 작성한 댓글입니다.
이 댓글은 2023-08-16 01:17에 마지막으로 수정되었습니다.

SELECT *

FROM (

    SELECT 'A' AS FLAG, 1500 AS CAL FROM DUAL UNION ALL

    SELECT 'B' AS FLAG, 60 AS CAL FROM DUAL UNION ALL

    SELECT 'C' AS FLAG, 30 AS CAL FROM DUAL UNION ALL

    SELECT 'D' AS FLAG, 200 AS CAL FROM DUAL UNION ALL

    SELECT 'E' AS FLAG, (SELECT CAL FROM DUAL WHERE FLAG = 'A') - (SELECT CAL FROM DUAL WHERE FLAG = 'D') - (SELECT CAL FROM DUAL WHERE FLAG = 'F') AS CAL FROM DUAL UNION ALL

    SELECT 'F' AS FLAG, 250 AS CAL FROM DUAL UNION ALL

    SELECT 'G' AS FLAG, 330 AS CAL FROM DUAL

) ;

최형주님이 2023-08-24 17:36에 작성한 댓글입니다. Edit

답변주신분들 너무너무 감사합니다.

완전 대단 하세요. 저도 언젠가 저렇게 짤수 있겠죠..ㅎㅎ

김진수님이 2023-09-01 13:51에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41971row을 컬럼으로 변경하는 쿼리 좀 봐주세요, [3]
서주희
2023-09-01
1566
41970데이타베이스와 테이블이 안보이네요!!! [1]
신승익
2023-08-22
1039
41969OR EXPANSION 가능하도록 가능한지 확인 부탁드립니다. [2]
김병두
2023-08-21
1077
41968쿼리 좀 도와주세요. 도저히 못 구하겠어요 [3]
김진수
2023-08-11
882
41967쿼리 질문드립니다! [1]
뽕구파파
2023-08-08
364
41966SqL 도움 요청입니다. [2]
김진수
2023-07-25
604
41964스칼라 서브쿼리를 아우터 조인으로 [1]
유경일
2023-07-12
870
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다