SQL Server에서 중첩된 대소문자 논리를 수행하는 가장 좋은 방법
꽤 많은 조건에 따라 반환되는 열 중 몇 개를 계산해야 하는 SQL 쿼리를 작성하고 있습니다.
현재 중첩된 케이스 문을 사용하고 있지만 점점 지저분해지고 있습니다. 더 나은(더 체계적이고 가독성이 높은) 방법이 있나요?
(Microsoft SQL Server, 2005 사용 중)
단순화된 예제입니다:
SELECT
col1,
col2,
col3,
CASE
WHEN condition
THEN
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation1
ELSE calculation2
END
ELSE
CASE
WHEN condition2
THEN calculation3
ELSE calculation4
END
END
ELSE
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation5
ELSE calculation6
END
ELSE
CASE
WHEN condition2
THEN calculation7
ELSE calculation8
END
END
END AS 'calculatedcol1',
col4,
col5 -- etc
FROM table
169
9
예를 들어 COALESCE 트릭을 사용해 볼 수 있습니다:
랩 모든 경우에도 하나의.
상황을 피하기 위해 여러 조건을 결합할 수 있습니다.
저는 개인적으로 이런 식으로 임베드된 CASE 표현식을 제한하여 사용합니다. 또한 무슨 일이 일어나고 있는지 설명하기 위해 주석을 넣습니다. 너무 복잡하다면 함수로 분리합니다.
39 의 간단한 해결책은 here& 네스트된 " Complex"; 케이스 스테망:
그냥 모든 사건에 대한 최종 기술서임을 기술서임을 있어야 합니다
사용자 정의 함수가 적어도 로직을 숨기는 데 더 효과적일 수 있습니다. 특히 둘 이상의 쿼리에서 이 작업을 수행해야 하는 경우 더욱 그렇습니다.
성능 오버헤드를 줄일 수 있는 조건을 함께 다수의 수 있습니다.
이제 a b c 수행할 수 있는 세 가지 변수를 우리가 원하는 건. 아래와 같이 이 작업을 할 수 있습니다.
그러나 이 모든 답을 찾을 수 있고, 내가 겪은 이야기를 하는 슈퍼 준활성 추가합니까 오토메이티드 @deejers 주어진다.
다른 만들 수 있다는 것은 아주 도움됐네 선택적입니다 옵션임 등 대부분의 시나리오에서와.
이 예에서는 이 그림은 SQL 경우 어떻게 도움이 기술서임을 보일 경우 및 하나 이상의 경우 경우 내부 루프
! [입력하십시오. 이미지 여기에 설명을] [1]