2016-06-06 1 views
-2

Я пытаюсь получить результат из таблицы, зависящий от поля, и заполнить переменную из разных полей в зависимости от одного из полей. Вот что у меня естьИспользовать переменную в случае Case

DECLARE @MyText Text; 
SELECT 
bu4contart, 
CASE WHEN bu4contart IN('40HR', '40RF') THEN 
    'Temp: ' + bu4setpoint 
ELSE 
    'Oversize: ' + bu4ohtop 
END AS @MyText 
FROM MyTable 
+2

И проблема в том, что ...? Какие СУБД? Какая версия? Как выглядят ваши таблицы и данные? Это расплывчато. –

+1

Вы не можете установить переменные и выбрать данные в том же запросе. Плюс переменная может содержать только _one_ значение. Какова цель переменной? Ожидаете ли вы, что запрос объединяет все значения в одну текстовую переменную? –

+0

Добавлен тег 'sql-server' на основе предоставленного синтаксиса –

ответ

0

Ваша проблема в том, что вы хотите получить скалярное значение из (возможно) набора строк. Это может работать для скалярной ситуации.

DECLARE @MyText Text = 
(SELECT Top 1 

CASE WHEN bu4contart IN('40HR', '40RF') THEN 
    'Temp: ' + bu4setpoint 
ELSE 
    'Oversize: ' + bu4ohtop 
END AS MyText 
FROM MyTable 
Order By FieldThatOrdersForTop1FromMultipleRowsIfNecessary 
) 
+0

Thank You Joe C отлично работает! –

0

Возможно, это?

DECLARE @MyText varchar(max); 
DECLARE @sql varchar(max); 

SET @MyText = 'ahahahha'; 

SET @sql='SELECT 
    bu4contart, 
    CASE WHEN bu4contart IN(''40HR'', ''40RF'') THEN 
     ''Temp: '' + bu4setpoint 
    ELSE 
     ''Oversize: '' + bu4ohtop 
    END AS ' + @MyText 
    + ' FROM MyTable'; 

EXECUTE (@sql) 

 Смежные вопросы

  • Нет связанных вопросов^_^