SQL Select 문의 기능
-
06-07-2019 - |
문제
CREATE VIEW View1
AS
SELECT Col1,
Col2,
dbo.fn1(col2) as Col3
FROM TestTable
/*
--Instead of writing below query I created a new View View2
SELECT Col1,
Col2,
dbo.fn1(col2) as Col3
dbo.fn2(dbo.fn1(col2)) as Col4
FROM TestTable
*/
CREATE VIEW View2
AS
SELECT Col1,
Col2,
Col3,
dbo.fn3(col3) as Col4
FROM TestTable
위와 같은 쿼리가 있습니다. FN1의 출력 인 열이 있습니다. 이 출력을 다른 기능 FN2에 사용하고 싶었습니다. 이 경우 FN2에서 col3를 직접 사용할 수 없으므로 두 가지 기능을 분할하고 아래와 같이 봅니다. 나는 올바른 방향으로 움직이는 것을 알고 싶었습니다. 제가하고있는 일이 맞습니까? 아니면 더 좋은 방법이 있습니까? View1의 주석은 부분에서 FN1 함수가 두 번 호출됩니까? 아니면 SQL Server가 최적화를 처리할까요?
해결책
당신은 이것을합니다 ...
SELECT
Col1,
Col2,
col3,
dbo.fn2(col3) AS Col4
FROM
(
SELECT
Col1,
Col2,
dbo.fn1(col2) as Col3
FROM
TestTable
) foo
제휴하지 않습니다 StackOverflow