2012-02-05 21 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

ホープカセットは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よりも、知覚可能な差異を生じ、おそらく計算するのが安いだろうと疑う。 –

関連する問題