development

SQL 계산에서 별칭 사용

big-blog 2020. 12. 10. 20:51
반응형

SQL 계산에서 별칭 사용


이 쿼리가 작동하지 않는 이유는 무엇입니까?

SELECT 10 AS my_num, my_num*5 AS another_number
FROM table

이 예에서는 다른 계산에서 my_num 별칭을 사용하려고합니다. 그 결과 알 수없는 "my_num"열이 생성됩니다.

이것은 제가하려는 작업의 단순화 된 버전이지만 기본적으로 별칭을 사용하여 다른 계산을하고 싶습니다. 내 계산은 훨씬 더 복잡하기 때문에 여러 번 다른 방식으로 반복하기 때문에 별칭을 지정하는 것이 좋습니다.


재사용 된 별칭을 (SELECT alias)다음으로 감싸기 만하면됩니다 .

SELECT 10 AS my_num, 
       (SELECT my_num) * 5 AS another_number
FROM table

그런 방식으로 별칭을 사용하려면 하위 선택을 사용해야합니다.

SELECT my_num*5 AS another_number FROM
(
    SELECT 10 AS my_num FROM table
) x

SQL의 별칭은 프로그래밍 언어의 변수와 다릅니다. 별칭은 특정 지점 (특히 GROUP BYHAVING절) 에서만 다시 참조 할 수 있습니다 . 그러나 SELECT에서 별칭을 재사용 할 수 없습니다 . 따라서 기본적으로 열 이름을 바꾸거나 계산 된 열의 이름 을 지정할 수있는 파생 쿼리 (예 : Rubens Farias에서 제안 )를 사용할 수 있습니다.

또는 VIEW공식이 일반적으로 고정 된 경우

CREATE VIEW table10 AS SELECT 10 AS my_num FROM table;
SELECT my_num * 5 AS another_number FROM table10;

파생 쿼리를 사용하는 것보다 약간 빠르다고 생각하지만 실제 쿼리에 많이 의존합니다.

또는 작업을 복제 할 수 있습니다.

SELECT 10 AS my_num, 10 * 5 AS another_number FROM table;

php / perl과 같이 편리 할 수 ​​있습니다.

my $my_num = 10;
my $query = "SELECT $my_num AS my_num, $my_num * 5 AS another_number FROM table";

`` 또 다른 옵션은 APPLY 연산자를 사용하는 것입니다.

SELECT my_num, my_num*5 AS another_number
FROM table
CROSS APPLY 
(SELECT 5 AS my_num) X

참고 URL : https://stackoverflow.com/questions/2077475/using-an-alias-in-sql-calculations

반응형