2014-02-12 7 views
1

대답은 간단하지만 나는 잠시 동안 검색을 해왔고이 작업을 수행하지 못하는 것 같습니다 ... Case 문 결과를 기반으로 변수를 설정하려고합니다. 길이/75는 우리가 1이면 1 항에 따라 반환 1 이상이면 두 개의 열 CASE 결과 변수를 SQL로 설정합니까?

dbo.MY_TABLES.MY_RULESET, 
dbo.MY_TABLES.MY_SPECIFICATION 

내 경우 문

그래서 확인하고 길이는, 우리는 (1에서) I를 값을 반환 확인 이 두 결과를 함께 추가하고 사례 결과에 따라 추가가 필요할 때 문제가 발생하는 곳입니다. 여기

은 병렬로 평가하는 경우 다음과 같이 계산된다 SELECT 절에 샘플

Declare @SpecValue FLOAT 
Declare @RuleValue FLOAT 

SELECT 
CAST(LEN(MY_SPECIFICATION) AS FLOAT)/75 as Score1, 
CAST(LEN (MY_RULESET) AS FLOAT)/75 AS Score2, 

CASE 
WHEN (CAST(LEN(MY_SPECIFICATION) AS FLOAT)/75) >1 Then '1' 
ELSE (Round(CAST(LEN(MY_SPECIFICATION) AS FLOAT)/75,2)) 
END as Spec1_RuleLength, 


CASE 
When (CAST(LEN (MY_RULESET) AS FLOAT)/75) >1 Then '1' 
ELSE (Round(CAST(LEN (MY_RULESET) AS FLOAT)/75,2)) 
END as Eval2_RuleLength, 

dbo.MY_TABLES.MY_RULESET, 
dbo.MY_TABLES.MY_SPECIFICATION 


FROM MY_TABLES 
+1

당신은 unqoute해야 '1' '후 Then' 당신이 번호로 사용하려는 경우. 또한 표시되는 오류 메시지는 무엇입니까? –

+0

'1'에 대한 좋은 지적 - 감사. 글쎄,이게 효과가 있기를 바랐다. Set @SpecValue = Case ......... 이 오류가 발생한다. 'Set'키워드 근처에 구문이 틀리다. – user3302303

답변

1

모든 열입니다. 즉, 하나의 열은 동일한 SELECT에서 계산 된 다른 열의 값에 의존 할 수 없습니다.

당신은 부속으로 현재 쿼리를 이동하려고 할 수 있습니다

SELECT Score1 + Score2 /* etc */ 
FROM (
    SELECT 
    CAST(LEN(MY_SPECIFICATION) AS FLOAT)/75 as Score1, 
    CAST(LEN (MY_RULESET) AS FLOAT)/75 AS Score2, 

    CASE 
    WHEN (CAST(LEN(MY_SPECIFICATION) AS FLOAT)/75) >1 Then '1' 
    ELSE (Round(CAST(LEN(MY_SPECIFICATION) AS FLOAT)/75,2)) 
    END as Spec1_RuleLength, 


    CASE 
    When (CAST(LEN (MY_RULESET) AS FLOAT)/75) >1 Then '1' 
    ELSE (Round(CAST(LEN (MY_RULESET) AS FLOAT)/75,2)) 
    END as Eval2_RuleLength, 

    dbo.MY_TABLES.MY_RULESET, 
    dbo.MY_TABLES.MY_SPECIFICATION 


    FROM MY_TABLES 
) t 
+0

Subquery 메서드는 정확히 내가 필요한 것입니다. - Damien에게 감사드립니다. 는 내가 실제로 짓을하는 것은 이것이다 : ((선택 CASE WHEN (CAST (LEN FLOAT AS (EY_STANDARD_SPECIFICATION))/@ SpecComplete)> 1 그리고 1 ELSE (라운드 (CAST (LEN FLOAT AS (EY_STANDARD_SPECIFICATION))/(ELAST) (라운드 (CAST (LEN (MY_SPECIFICATION) AS FLOAT)/75,2)) 1 일 때 (예 : CAST (LEN (MY_Ruleset) AS FLOAT)/75) END)) as Total – user3302303

관련 문제