문제

가 선택한 성명으로 계산된 열이 나는 것 같은 값을 사용하여 계산된 열이 있습니다.이것이 가능한가요?여기에는 예제를 보여 나가고자 노력하고 있습니다.

SELECT [calcval1] = CASE Statement, [calcval2] = [calcval1] * .25
도움이 되었습니까?

해결책

No.

는 모든 결과에 하나의 행에서 선택하는 원자.즉,당신은 그들 모두를 볼 수 있습으로 발생하는 경우에 평행할 수 없는 서로에 따라 다릅니다.

당신은 참조하여 계산 열,그 후 업데이트해야 할 수식의 입력에 대한 결과를 변경하는 동안 선택합니다.

생각의 계산 열 매크로로 또는 미니망를 삽입하는 작은 계산할 때마다 당신이 그들을 부르십시요.

예를 들어,이러한 열과 동일할 것,항상:

-- assume that 'Calc' is a computed column equal to Salaray*.25
SELECT Calc, Salary*.25 Calc2 FROM YourTable

또한 염두에 두는 persisted 옵션을 변경하지 않습니다.그것은 주위에 가치에 대한 좋은 인덱싱하지만,원자성 변경되지 않습니다.

다른 팁

불행히도 실제로는 아니지만 때로는 가치있는 해결 방법은

SELECT [calcval1], [calcval1] * .25 AS [calcval2]
FROM (SELECT [calcval1] = CASE Statement FROM whatever WHERE whatever)

예, 가능합니다.

사용 성명서와 함께 중첩 된 선택의 경우 :

내가 그렇게 생각할 수있는 두 가지 방법. 먼저 Calval1 열은 명령문이 실행될 때까지 SQL Server에 관한 한 존재하지 않으므로 예제를 보여주는대로 직접 사용할 수 없습니다. 따라서 Calval1의 경우 한 번, Calval2 계산에서 Calcval1의 대체로 계산을 두 번 두 번 넣을 수 있습니다. 다른 방법은 Calval1이있는 파생 테이블을 만들고 파생 된 테이블 외부에서 Calval2를 다음과 같은 것입니다.

select calcval1*.25 as calval2, calval1, field1, field2
from (select casestament as cavlval1, field1, field2 from my table) a

성능을 모두 테스트해야합니다.

하위 선택 대신 외부 적용을 사용해야합니다.

select V.calc,V.calc*0.25 from FOO outer apply (select case Statement as calc) V

할 수 없습니다"reset"값을 계산 열의 선택 절는 경우에는 무엇을 하려고 시도하고 있는...의 값을 계산 열에 기반한 계산 열견할 수 있었습니다.포함할 수 있는 값의 다른 계산된 열이 있습니다....하지만 당신은 canlt 재설정 방식에서 선택 절...만약 당신이해야 할 모든 당신은"출력"값에 따라 계산된 열,(으로 구문에서 당신의 질문을 읽고"다음 "[calcval2]"

SELECT [calcval1] = CASE Statement, [calcval2] = [calcval1] * .25 

단가 열 별칭에서 출력의 선택 절입니다.

또는 당신이 요구하는 방법을 정의하는 공식에 대한 하나의 계산된 열에 기반하는 또 다른?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top