2017-08-04 5 views
0

- 私選択します。ビューでSQLのためにのためにとビューを作成し、この表でPostgresデータベースにビューを作成しようとして

|----|------|------|--------|--------|--------|--------| 
| id | t1_n | t2_n | value1 | value2 | value3 | valueX | 
|----|------|------|--------|--------|--------|--------| 
| 1 | A | X | 12 | 2 | 1 | .. | 
| 2 | B | Y | 2 | 2 | 20 | .. | 
| 3 | C | Z | 41 | 1 | 1 | .. | 
| 4 | A | Z | 43 | 3 | 4 | .. | 
| 5 | B | Y | 15 | 5 | 1 | .. | 
| 6 | C | X | 52 | 2 | 5 | .. | 
| 7 | .. | .. | .. | .. | .. | .. | 
|----|------|------|--------|--------|--------|--------| 

を、各ゾーンには、既存の各部門で入力する必要があります。 次の列には、個々のSELECTSの結果が含まれています。

ビュー:

|----|------|------|------|------|------|------| 
| id | t1_n | t2_n | sum1 | sum2 | sum3 | sum4 | 
|----|------|------|------|------|------|------| 
| 1 | A | X | .. | .. | .. | .. | 
| 2 | A | Y | .. | .. | .. | .. | 
| 3 | A | Z | .. | .. | .. | .. | 
| 1 | B | X | .. | .. | .. | .. | 
| 2 | B | Y | .. | .. | .. | .. | 
| 3 | B | Z | .. | .. | .. | .. | 
| 1 | C | X | .. | .. | .. | .. | 
| 2 | C | Y | .. | .. | .. | .. | 
| 3 | C | Z | .. | .. | .. | .. | 
| 3 | .. | .. | .. | .. | .. | .. | 
|----|------|------|------|------|------|------| 

SUM1は次のようになります。

SELECT sum(value1) FROM table1 WHERE t1_n = [current_t1_n] AND t2_n = [current_t2_n]; 

SUM2は次のようになります。

SELECT sum(value2) FROM table1 WHERE t1_n = [current_t1_n] AND t2_n = [current_t2_n]; 

SUM3は次のようになります。

SELECT sum(value3) FROM table1 WHERE t1_n = [current_t1_n] AND t2_n = [current_t2_n]; 

多分そのような何か:

for(t1_n){ 
    for(t2_n){ 
    set sum1, sum2, sum3, sumX...}} 

THXは、助けを求め

答えて

0

は、サブクエリとして合計を計算し、共通の列のすべてのリストにそれらのサブクエリに参加します。これはパターンの例です:

select 
    k.t1_n, 
    k.t2_n, 
    sum1, 
    sum2 
from 
    (select distinct t1_n, t2n from table1) as k 
    left join (
     select t1_n, t2_n, sum(value1) as sum1 
     from table1 
     group by t1_n, t2_n 
     ) as s1 using (t1_n, t2_n) 
    left join (
     select t1_n, t2_n, sum(value2) as sum2 
     from table1 
     group by t1_n, t2_n 
     ) as s2 using (t1_n, t2_n) 
; 

これは、追加の列と合計のためにこれを拡張すると思われます。テーブルに欠損値がない場合は、代わりに内部結合を使用できます。

+0

thx、それが動作します。私はそれをヌル値の内部結合に変更する – Kirbylix

関連する問題