2014-10-23 2 views
0

하위 쿼리를 사용하지 않고이 코드를 복제 할 수있는 방법을 찾고 있습니다.하위 쿼리가없는 SQL ALL

Case 
    When 'White' = All(Table1.Color1, 
    Table1.Color2, Table2.Color1, 
    Table2.Color2) Then 1 Else 0 End As allWhite 

이 그 일을 매우 convient 방법처럼 보인다하지만 잘못된 구문 오류가 나타날 수 Wrong syntax near 'Table1'

이 할 수있는 방법이 있나요 (어쩌면 정확하지 않은 100 % 번역)?

+0

및 구문 오류입니다 ??? 샘플 값과 원하는 출력을 가진 전체 쿼리도 유용 할 수 있습니다. – Tanner

+0

그것을 편집했는데 일반적인 것입니다 – Spurious

+0

'ALL '의 값은 하위 쿼리를 사용하여 지정해야하며 1 열만 포함 할 수 있다고 생각합니다. 이렇게하면 내 필요에 맞지 않습니다. – NickyvV

답변

1

난 당신이 찾고있는 생각 :

CASE 
    WHEN 
     Table1.Color1 = 'White' AND 
     Table1.Color2 = 'White' AND 
     Table2.Color1 = 'White' AND 
     Table2.Color2 = 'White' 
    THEN 1 
    ELSE 0 
END AS AllWhite 
+0

그래, 그렇게하는 것이 표준 방법이며 효과가 있지만 더 복잡합니다. 주어진 모든 연산자가 존재하는 이유는 단지 서브 쿼리를 허용하고 스트레이트 컬럼을 허용하지 않는 이유입니다. – Spurious

+0

@ 가짜. . . 차라리 't1.Color1 = t2.Color2 = t1.Color2 = t2.Color2 ='White ''구문을 지원 하겠지만 그렇지 않습니다. 그것이 SQL이 정의 된 방법입니다. Microsoft에서 SQL Server 용 확장 프로그램을 추가하기를 원한다면 로비를 할 수는 있지만 다른 많은 사람들에게 필요를 확신시킬 수는 없을 것입니다. –

+0

솔직히 정확한 구문이 첫 번째 시도 였지만 분명히 작동하지 않았지만, 나는 모두 시도한 다음 작동하지 않았습니다. 첫 번째 구문이 반드시 지원되는 것은 아니지만 ALL에는 필요한 모든 것이 포함되어있는 이유를 이해할 수 있습니다. – Spurious

관련 문제