열 정의를 반복하지 않으려는 경우 파생 테이블을 사용할 수 있습니다. 빠른 테스트는 세 가지 버전의 실행 계획을 보여줍니다
;
With blahs As
(
select 'blah' as foo
)
select case when foo='blah'
then 'fizz'
else 'buzz'
end as bar
FROM blahs
select case when foo='blah'
then 'fizz'
else 'buzz'
end as bar
FROM
(
select 'blah' as foo
) derived
아니면 CTE는 다음과 같은
SELECT foo,
CASE
WHEN foo='blah'
THEN 'fizz'
ELSE 'buzz'
END AS bar
FROM (SELECT
CASE
WHEN [number] % 5 = 0
THEN 'blah'
ELSE 'notblah'
END AS foo
FROM [master].[dbo].[spt_values]
)
D ;
WITH blahs AS
(SELECT
CASE
WHEN [number] % 5 = 0
THEN 'blah'
ELSE 'notblah'
END AS foo
FROM [master].[dbo].[spt_values]
)
SELECT foo,
CASE
WHEN foo='blah'
THEN 'fizz'
ELSE 'buzz'
END AS bar
FROM blahs
SELECT
CASE
WHEN [number] % 5 = 0
THEN 'blah'
ELSE 'notblah'
END AS foo,
CASE
WHEN
CASE
WHEN [number] % 5 = 0
THEN 'blah'
ELSE 'notblah'
END='blah'
THEN 'fizz'
ELSE 'buzz'
END AS bar
FROM [master].[dbo].[spt_values]