쿼리에서 나는 CASE
표현식을 사용하여 많은 필드를 만듭니다.T-SQL의 별칭 필드 액세스
나중에 쿼리에서이 필드를 참조해야하지만 해당 별칭을 사용하여 필드에 액세스 할 수없는 것 같습니다. 해당 값을 참조 할 때마다 CASE
식을 반복해야합니다.
이 필드에 액세스하는 간단한 방법이 있습니까?
쿼리에서 나는 CASE
표현식을 사용하여 많은 필드를 만듭니다.T-SQL의 별칭 필드 액세스
나중에 쿼리에서이 필드를 참조해야하지만 해당 별칭을 사용하여 필드에 액세스 할 수없는 것 같습니다. 해당 값을 참조 할 때마다 CASE
식을 반복해야합니다.
이 필드에 액세스하는 간단한 방법이 있습니까?
이 매우 기본적인 예제와 열팽창 계수 (SQL 서버 2005 + 가정)을 사용할 수 있습니다
DECLARE @Val INT
SET @Val = 1
;WITH CTEExample AS
(
SELECT CASE @Val WHEN 1 THEN 'A' ELSE 'B' END AS MyCaseField1
)
SELECT * FROM CTEExample WHERE MyCaseField1 = 'A'
CTE를 잘 활용하여 인생을 더 편리하게 만들어주는 훌륭한 사례입니다. –
이유는 단순히 서브 쿼리
예를 들어
SELECT foo.column
FROM (
SELECT
CASE WHEN yourcase THEN 'a'
ELSE 'b'
END AS 'column'
FROM yourtable) AS foo
을하지만,이 수 CTE로 완료 (look at this answer)
이 as in this tip by Itzik Ben Gan에 대한
SELECT SalesOrderID, OrderDate, Week_Day
FROM Sales.SalesOrderHeader
CROSS APPLY
(SELECT DATEPART(weekday, DATEADD(day, @@DATEFIRST - 7, OrderDate)) AS Week_Day) AS A
WHERE Week_Day NOT IN (1, 7);
당신은
당신이 우리에게 줄 수 있습니다 (이 관계없이
APPLY
또는 CTE 사용 여부의 적용)이where
절에 별칭을 재사용하는 것은 그러나 때문에주의해서 사용해야합니다 unsargable 술어를 렌더링 알고 있어야합니다 코드의 일부? 아마도 함수를 사용하여 문제를 해결할 수 있지만, 몇 가지 예를 들어 주면 더 쉬울 것입니다. –