계산된 열을 사용하여 동일한 뷰에서 다른 열을 계산하는 방법
저는 당신이 이 질문에 도움이 되기를 바랍니다.Oracle SQL(이 뷰용 SQL 개발자)을 사용하고 있습니다...
다음 열이 있는 테이블이 있는 경우:
- 열 A(번호)
- 열 B(숫자)
- ColumnC(번호)
제가 보기에는
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1
이 시점에서 calcolumn1을 사용하고 싶은데...
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1
calccolumn1 / ColumnC as calccolumn2
서브쿼리가 필요할 것 같은데..하지만 여기서 당신의 도움이 필요해요같은 쿼리 내의 다른 계산에서 calccolumn1을 사용하려면 쿼리를 어떻게 표현해야 합니까?If then 또는 Case when일 수 있지만, 요점은 파생된 수치입니다.
중첩된 쿼리를 사용할 수 있습니다.
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
(함수 호출 등을 통해) 실제로 비용이 많이 드는 작업이 아닌 한 첫 번째 계산을 반복할 수도 있습니다.
Select
ColumnA,
ColumnB,
ColumnA + ColumnB As calccolumn1,
(ColumnA + ColumnB) / ColumnC As calccolumn2
from t42;
COLUMNA COLUMNB CALCCOLUMN1 CALCCOLUMN2
---------- ---------- ----------- -----------
3 4 7 1.4
SQL Server에서
다음을 사용하여 이 작업을 수행할 수 있습니다.cross apply
Select
ColumnA,
ColumnB,
c.calccolumn1 As calccolumn1,
c.calccolumn1 / ColumnC As calccolumn2
from t42
cross apply (select (ColumnA + ColumnB) as calccolumn1) as c
"같은 쿼리 수준"에서 계산된 열을 참조하려면CROSS APPLY(오라클 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;
그 표현에 주의해 주세요.CROSS APPLY/OUTER APPLY는 다른 절에서도 사용할 수 있습니다.
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 ...;
이 방법을 사용하면 전체 쿼리를 외부 쿼리로 래핑하거나 여러 위치에 동일한 식을 복사/붙여넣는 작업을 피할 수 있습니다(복잡한 경우 유지 관리가 어려울 수 있음).
관련 기사:SQL 언어에서 가장 부족한 기능
계산된 열에 대한 식을 포함해야 합니다.
SELECT
ColumnA,
ColumnB,
ColumnA + ColumnB AS calccolumn1
(ColumnA + ColumnB) / ColumnC AS calccolumn2
SQL
Server에서는 CTE를 사용하여 이 작업을 수행할 수 있습니다.
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
언급URL : https://stackoverflow.com/questions/19185043/how-to-use-a-calculated-column-to-calculate-another-column-in-the-same-view
'programing' 카테고리의 다른 글
| jQuery 체크 워드프레스_logged_in cookie (0) | 2023.03.26 |
|---|---|
| Wordpress JsonAPI - /wp-json/을(를) 이 서버에서 찾을 수 없습니다. (0) | 2023.03.26 |
| 이 Rails JSON 인증 API(Gand 사용)는 안전한가요? (0) | 2023.03.26 |
| 하위 폴더에 Nginx 다시 쓰기(404) (0) | 2023.03.26 |
| jq의 빈 어레이를 적절하게 삭제하는 방법 (0) | 2023.03.26 |