itsource

SQL 계산에서의 에일리어스 사용

mycopycode 2022. 10. 5. 22:23
반응형

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 BY그리고.HAVING절)을 참조해 주세요.하지만 에일리어스를 재사용할 수 없습니다.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

반응형