[SQL] 같은보기에서 다른 열을 계산하는 계산 된 열을 사용하는 방법
SQL같은보기에서 다른 열을 계산하는 계산 된 열을 사용하는 방법
나는 당신이이 질문에 도움이 될 수 있습니다 기대하고있다. 나는 오라클 SQL (이 뷰에 대한 SQL Developer를) 사용하고 있습니다 ...
나는 다음과 같은 열이있는 테이블이있는 경우 :
내보기에 나는이
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1
지금이 시점에서, 나는 calccolumn1를 사용하려면 하지만 난 그냥 말할 수 없다 ...
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1
calccolumn1 / ColumnC as calccolumn2
나는 어떤 종류의 필요 subquery..but 나는 당신의 도움을 필요로하는 곳이 가정입니다 ... 어떻게 단어 쿼리는 그래서 동일한 쿼리 내의 다른 계산에 calccolumn1을 사용할 수있는 것? 그것은 다음의 경우 또는 케이스 일 수 있지만, 일부 파생 된 번호입니다 최하위 있습니다.
해결법
-
==============================
1.당신은 중첩 된 쿼리를 사용할 수 있습니다 :
당신은 중첩 된 쿼리를 사용할 수 있습니다 :
Select ColumnA, ColumnB, calccolumn1, calccolumn1 / ColumnC as calccolumn2 From ( Select ColumnA, ColumnB, ColumnC, ColumnA + ColumnB As calccolumn1 from t42 );
범 값 3, 4, 5 행으로 :
COLUMNA COLUMNB CALCCOLUMN1 CALCCOLUMN2 ---------- ---------- ----------- ----------- 3 4 7 1.4
당신은 또한 그냥 정말 비싼 뭔가를하고있는 게 아니라면 (함수 호출을 통해 말), 제 1 계산을 반복 할 수 있습니다 :
Select ColumnA, ColumnB, ColumnA + ColumnB As calccolumn1, (ColumnA + ColumnB) / ColumnC As calccolumn2 from t42; COLUMNA COLUMNB CALCCOLUMN1 CALCCOLUMN2 ---------- ---------- ----------- ----------- 3 4 7 1.4
-
==============================
2.에서의 SQL 서버
에서의 SQL 서버
당신이 사용하는 크로스 적용 할 수있는
Select ColumnA, ColumnB, c.calccolumn1 As calccolumn1, c.calccolumn1 / ColumnC As calccolumn2 from t42 cross apply (select (ColumnA + ColumnB) as calccolumn1) as c
-
==============================
3.당신은 "동일한 쿼리 수준"계산 열을 참조 할 경우에 당신은 CROSS은 (오라클 12C) 적용 사용할 수 있습니다 :
당신은 "동일한 쿼리 수준"계산 열을 참조 할 경우에 당신은 CROSS은 (오라클 12C) 적용 사용할 수 있습니다 :
--Sample data: CREATE TABLE tab(ColumnA NUMBER(10,2),ColumnB NUMBER(10,2),ColumnC NUMBER(10,2)); INSERT INTO tab(ColumnA, ColumnB, ColumnC) VALUES (2, 10, 2); INSERT INTO tab(ColumnA, ColumnB, ColumnC) VALUES (3, 15, 6); INSERT INTO tab(ColumnA, ColumnB, ColumnC) VALUES (7, 14, 3); COMMIT;
질문:
SELECT ColumnA, ColumnB, sub.calccolumn1, sub.calccolumn1 / ColumnC AS calccolumn2 FROM tab t CROSS APPLY (SELECT t.ColumnA + t.ColumnB AS calccolumn1 FROM dual) sub;
DB 휘티 d 혀라도
적용 CROSS / OUTER 너무 다른 절에서 사용할 수 있습니다 적용에서 그 표현을 유의하시기 바랍니다 :
SELECT ColumnA, ColumnB, sub.calccolumn1, sub.calccolumn1 / ColumnC AS calccolumn2 FROM tab t CROSS APPLY (SELECT t.ColumnA + t.ColumnB AS calccolumn1 FROM dual) sub WHERE sub.calccolumn1 = 12; -- GROUP BY ... -- ORDER BY ...;
이 방법은 (복잡 하나는 유지하기 어려울 수 있습니다) 여러 장소에서 같은 표현을 / outerquery 또는 사본으로 전체 쿼리를 포장하지 않도록 붙여 넣기 할 수 있습니다.
관련 기사 : SQL 언어의 대부분 누락 된 기능
-
==============================
4.당신은 당신의 계산 열에 대한 표현을 포함해야한다 :
당신은 당신의 계산 열에 대한 표현을 포함해야한다 :
SELECT ColumnA, ColumnB, ColumnA + ColumnB AS calccolumn1 (ColumnA + ColumnB) / ColumnC AS calccolumn2
-
==============================
5.에서 SQL 서버 당신은 CTE로 사용하여이 작업을 수행 할 수 있습니다
에서 SQL 서버 당신은 CTE로 사용하여이 작업을 수행 할 수 있습니다
WITH common_table_expression (Transact-SQL)를 참조하십시오
CREATE TABLE tab(ColumnA DECIMAL(10,2), ColumnB DECIMAL(10,2), ColumnC DECIMAL(10,2)) INSERT INTO tab(ColumnA, ColumnB, ColumnC) VALUES (2, 10, 2),(3, 15, 6),(7, 14, 3) WITH tab_CTE (ColumnA, ColumnB, ColumnC,calccolumn1) AS ( Select ColumnA, ColumnB, ColumnC, ColumnA + ColumnB As calccolumn1 from tab ) SELECT ColumnA, ColumnB, calccolumn1, calccolumn1 / ColumnC AS calccolumn2 FROM tab_CTE
DB 휘티 d 혀라도
from https://stackoverflow.com/questions/19185043/how-to-use-a-calculated-column-to-calculate-another-column-in-the-same-view by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 INSERT INTO ... VALUES과 SELECT (0) | 2020.05.02 |
---|---|
[SQL] SQL 오류 : ORA-01861 : 리터럴 형식 문자열 01861과 일치하지 않습니다 (0) | 2020.05.02 |
[SQL] 여러 행에 걸쳐 분할 값 [중복] (0) | 2020.05.02 |
[SQL] PHP는 변수를 사용하여 동적 MySQL의 쿼리 만들기 (0) | 2020.05.02 |
[SQL] 이름 데이터베이스 디자인 당신이 선호하는 표기법 그 이유는 무엇입니까? (0) | 2020.05.02 |