2016-04-14 17 views
0

私は2つのテーブルtable_atable_bを以下のように持っています。varcharに数値を与えた後の行の合計値

table_atable_a

a_id |columna |varchar1|varchar2|varchar3 
---------------------------------- 
| 1 | a  | Medium | High | n/a 
| 2 | b  | Low | n/a | n/a 
| 3 | c  | Medium | Low | High 

各VARCHAR値を数値与えられる:2として培地、1として およびtable_b

3として:

b_id |columna_fk|average 
-------------------------- 
| 1 | a  | 
| 1 | b  | 
| 3 | c  | 

table_bの行と更新平均列の平均値(n/aを無視)を取得する方法はありますか?

例えば下記の表を参照してください。一つの方法は、力ずくである

b_id |columna_fk|average 
-------------------------- 
| 1 | a  | 1.5 
| 1 | b  | 3 
| 3 | c  | 2 

答えて

0

おかげで、私はいくつかの変更を加え、それが私のために働いています。以下は私の変更です。

update b 
set average = 
(case when 
((case varchar1 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 else 0 end) + 
(case varchar2 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 else 0 end) + 
(case varchar3 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 else 0 end)) <> 0 
then 
((case varchar1 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 else 0 end) + 
(case varchar2 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 else 0 end) + 
(case varchar3 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 else 0 end)) 
/
((case varchar1 when 'n/a' then 0 else 1 end) + 
(case varchar2 when 'n/a' then 0 else 1 end) + 
(case varchar3 when 'n/a' then 0 else 1 end)) 
else null end) 
from a where a.columna = b.columna_fk; 
1

:あなたが答えるため

update b 
    set average = ((case varchar1 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 end) + 
        (case varchar2 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 end) + 
        (case varchar3 when 'High' then 1 when 'Medium' then 2 when 'Low' then 3 end) 
       )/
        nullif((case varchar1 when 'n/a' then 0 else 1 end) + 
         (case varchar2 when 'n/a' then 0 else 1 end) + 
         (case varchar3 when 'n/a' then 0 else 1 end) 
         ) 
    from a 
    where a.columna = b.columna_fk; 
+0

こんにちは@Gordon、あなたの答えのおかげで、私は – Taz

+0

@Taz「)」の最後のブラケットの最後に、構文エラーを取得しています。 。 。私はかっこで明らかな問題は見られません。 –

関連する問題