2012-02-05 2 views
0

Как умножить значения столбцов на основе значения в одном столбце.Умножение комбинаций столбцов на основе значения столбца

Пример

Col1 Col2 Col3 Col4 
    10  10  10  casea (multiply col1 * col2) 
    20  20  20  caseb (multiply col1 * col3) 
    30  30  30  casec (multiply col2 * col3) 

запрос типа:

select col1, col2, col3, col4, total 

вернется

10,10,10,casea,100 
    20,20,20,caseb,400 
    30,30,30,casec,900 

Из выступления, конечно, является важным вопросом, как всегда.

Благодарим за участие.

+1

Надежды - casec col2 * col3? –

ответ

4
select 
    Col1, 
    Col2, 
    Col3, 
    Col4, 
    CASE Col4 
    WHEN 'casea' then col1*col2 
    WHEN 'caseb' then col1*col3 
    WHEN 'casec' then col2*col3 
    END AS Total 
FROM YourTable 
+0

Я провел некоторое исследование, прежде чем публиковать этот вопрос, и узнал, что это правильное решение, которое будет работать плохо. – mko

+1

@John Для повышения производительности используются другие функции, такие как постоянные вычисленные столбцы и т. Д. Или ** просмотрите свою схему и поток данных ** –

+2

@ Джон. Почему вы думаете, что это будет плохо работать? Сомневаюсь, что это заметит разницу и, вероятно, будет дешевле вычислять, чем дополнительный IO для его хранения. –