2014-12-02 1 views
0

내가이 SQL 쿼리가 어디 :때 내부의 CASE의 선택된 값을 사용 절

SELECT date, 
    CASE WHEN h_score > v_score 
    THEN 
     ho_t_id 
    ELSE 
     v_t_id 
    END 
FROM Games 

내가 WHERE 절 안에 (경우에 문의) 선택된 값을 사용하고 싶습니다. 나는 그런 식으로 뭔가를 시도 :

SELECT date, 
    CASE WHEN h_score > v_score 
    THEN 
     ho_t_id 
    ELSE 
     v_t_id 
    END AS T 
FROM Games 
WHERE T = '1234' 

이 (물론)이 작동하지 않습니다.

어떻게하면됩니까?

감사합니다.

+0

MySQL은 SQL 서버 아니다. 하나를 선택. – podiluska

+1

'SELECT * FROM (여기에 검색어를 입력하십시오) AS X WHERE T = '1234' – Lamak

답변

1
SELECT date, T FROM (
    SELECT date, 
     CASE WHEN h_score > v_score 
     THEN 
      ho_t_id 
     ELSE 
      v_t_id 
     END AS T 
    FROM Games 
) g 
WHERE g.T = '1234' 
1

CTE 내에 쿼리를 넣고 where 절이있을 수 있습니다.

with cte 
as 
(
    SELECT date, 
      CASE 
      WHEN h_score > v_score 
      THEN ho_t_id 
      ELSE v_t_id 
      END AS T 
    FROM Games 
) 
select * from cte where T = '1234 
0

간단히 WHERE 절에 CASE를 반복 :

SELECT date, 
    CASE WHEN h_score > v_score 
    THEN 
     ho_t_id 
    ELSE 
     v_t_id 
    END AS T 
FROM Games 
WHERE (CASE WHEN h_score > v_score 
    THEN 
     ho_t_id 
    ELSE 
     v_t_id 
    END) = '1234'