2013-05-03 3 views
0

이렇게 쿼리를 반복하지 않고 아래 코드를 효율적으로 개선 할 수있는 방법이 있습니까?TSQL 쿼리 반복을 피하기 위해 자식 결과 집합에서 변수를 할당

참고 :이 경우 인수를 할당하기위한 알려진 수의 요소가 있습니다. 이 같은

SELECT @var0 = Field_A FROM Table_0 
JOIN Table_1 ON (Table_0.PK = Table_1.FK) 
WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 1; 

SELECT @var1 = Field_A FROM Table_0 
JOIN Table_1 ON (Table_0.PK = Table_1.FK) 
WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 2; 

SELECT @var2 = Field_A FROM Table_0 
JOIN Table_1 ON (Table_0.PK = Table_1.FK) 
WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 3; 

답변

1

뭔가 :

SELECT 
    @var0 = MAX(CASE table_0.field_b WHEN 1 THEN field_a END) 
    , @var1 = MAX(CASE table_0.field_b WHEN 2 THEN field_a END) 
    , @var2 = MAX(CASE table_0.field_b WHEN 3 THEN field_a END) 
FROM 
    table_0 
JOIN 
    table_1 
    ON 
     TABLE_0.PK = TABLE_1.FK 
+0

아니라 감사합니다 작동, 난 당신이 비록 최대 필요가 있다고 생각하지 않습니다. – Void

+1

집계 (최소 작업도 가능)는 여러 행을 단일 행으로 롤업하기 때문입니다. WHEN ... THEN ... ELSE가 없으면 ELSE NULL과 같습니다. 그런 다음 NULL은 집계 (이 경우 MAX())에 의해 마스크 처리됩니다. – JAQFrost

+0

설명 주셔서 감사합니다. – Void

관련 문제