2015-02-18 7 views
0

У меня есть два поля в SQL:Если заявление в SQL Server (случай, когда?)

Improvement Type 
25 Daily 
25 Weekly 
25 Monthly 

Я хочу написать, если заявление в SQL Server говоря»

If type = daily than Improvement/365 
If type = weekly than improvement/52 
If type = monthly than improvement/12 

Спасибо за помощь

+0

Тип дела, когда «Ежедневно», затем «Улучшение»/365, когда «Еженедельно», затем ... конец? –

+0

Это домашнее задание? – Kevin

ответ

3
SELECT CASE [Type] 
    WHEN 'Daily' THEN [Improvement]/365 
    WHEN 'Weekly' THEN [Improvement]/52 
    WHEN 'Monthly' THEN [Improvement]/12 
END AS CalculatedField 
FROM [MyTableNameHere] 
0

Ответ, предоставленный @TimLentine, является правильным, очевидным, соответствующим и должен использоваться. Вот подход, который не использует CASE, является недостижимым, ненадежным, скорее всего, хуже, и, короче говоря, по какой-либо причине он, вероятно, никогда не появится в производственном коде, если вы не хотите противодействовать своим коллегам.

SELECT 
    [Improvement]/SUBSTRING(0xc2a016d34, LEN([Type]) * 2 % 7, 2) 
FROM [MyTableNameHere] 

Если вы понимаете, почему это работает, вы также понимаете, почему его не следует использовать. Я поставляю его только для развлекательных целей.

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