Итерация по другой таблице в предложении Case when - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующее предложение CASE WHEN

SELECT T0.foo, CASE WHEN T0.Column1 = 'Y' THEN '8mm' 
            WHEN T0.Column2 = 'Y' THEN '10mm' 
            WHEN T0.Column7 = 'Y' THEN '13mm'
            WHEN T0.Column50 = 'Y' THEN '30mm' END AS 'Width'
            ...
FROM Table1 T0

На самом деле сопоставление является результатом другого запроса Table2

=========================
   Column1      Column2
=========================
   Column1      8mm
   Column2      10mm
   Column7      13mm
   Column50     30mm 
   ...          ...

Я ищу способ создания CASEWHEN Предложение в первом операторе с каким-то видом для каждого цикла или итерации результата второго оператора.

Псевдокод:

SELECT T0.foo, CASE WHEN (Select Column1 FROM Table2) = 'Y' THEN (SELECT Column2 FROM Table2) as 'Width'
FROM Table1 T0

1 Ответ

0 голосов
/ 02 октября 2018

Используйте join:

SELECT T1.foo, t2.Width
FROM Table1 T1 LEFT JOIN
     Table2 t2
     ON (t1.column1 = 'Y' AND t2.column = 'Column1') OR
        (t1.column1 = 'Y' AND t2.column = 'Column7') OR
        . . . 
...