[SQL] SELECT 목록에서 별칭 다른 곳에서 참조
SQLSELECT 목록에서 별칭 다른 곳에서 참조
나는 다음과 같은 쿼리를 가지고 :
select FirstName, LastName,
Case
When LastName = 'Jones'
then 'N/A'
End as Other,
Case
When Other is not null
then 1
else 0 as Flag
국기 값은 다른 중요하지만 다른 별칭처럼, 플래그 필드는 다른 인식하지 못합니다.
나는 내가 선택 내 선택을 사용할 수 같아요. 깃발이 다른 별칭 컬럼을 인식하기위한 더 좋은 방법이 있나요?
해결법
-
==============================
1.당신은 방법의 쿼리 구문 분석되기 때문 의해 별명 SELECT의 외부 ORDER를 참조 할 수 없습니다. 일반적인 해결 방법은 파생 테이블에 묻어하는 것입니다 :
당신은 방법의 쿼리 구문 분석되기 때문 의해 별명 SELECT의 외부 ORDER를 참조 할 수 없습니다. 일반적인 해결 방법은 파생 테이블에 묻어하는 것입니다 :
SELECT FirstName, LastName, Other, Flag = CASE WHEN Other IS NOT NULL THEN 1 ELSE 0 END FROM ( SELECT FirstName, LastName, CASE WHEN LastName = 'Jones' THEN 'N/A' END AS Other FROM dbo.table_name ) AS x;
-
==============================
2.또한 공통 테이블 식 (CTE)와 함께이 작업을 수행 할 수 있습니다
또한 공통 테이블 식 (CTE)와 함께이 작업을 수행 할 수 있습니다
;WITH cte AS ( SELECT firstname, lastname, CASE WHEN lastname = 'Jones' THEN 'N/A' END AS Other FROM @t ) SELECT firstname, lastname, CASE WHEN other IS NOT NULL THEN 1 ELSE 0 END AS Flag FROM cte
-
==============================
3.당신은 SELECT에 SELECT를 사용해야합니다 :
당신은 SELECT에 SELECT를 사용해야합니다 :
SELECT FirstName, LastName, Other, Case When Other is not null then 1 else 0 END as Flag FROM ( select FirstName, LastName, Case When LastName = 'Jones' then 'N/A' End as Other from yourTable ) x
아니면 플래그 필드를 평가하는 기타 필드에 대한 CASE 문을 다시 사용할 수 있습니다 :
select FirstName, LastName, Case When LastName = 'Jones' then 'N/A' End as Other, case when LastName = 'Jones' -- your Other CASE code here then 1 else 0 END as flag from yourTable
from https://stackoverflow.com/questions/11975749/reference-an-alias-elsewhere-in-the-select-list by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQLSTATE는 [42S22] : 열을 찾을 수 없습니다 : 1054 알 수없는 열 - Laravel (0) | 2020.05.16 |
---|---|
[SQL] 빈 SQL 테이블 퍼키이 있습니까? 모든 SQL 테이블합니까? (0) | 2020.05.16 |
[SQL] 동적 열 플러스 컬럼 이름 UNPIVOT (0) | 2020.05.16 |
[SQL] XMLNS와 OPENXML : DT (0) | 2020.05.16 |
[SQL] SQL에서 처음 2 특수 문자 사이의 문자를 가져옵니다 (0) | 2020.05.16 |