Oracle

如何在不影響列總和的情況下對 2 個連接表進行聯合?

  • November 5, 2015

我有以下表格:

cant:
id      CANT_VAL    COD_VAL fk_id_chest c1    c2
18059   18.56       R12     1           100   11
18060   11          R10     2           200   22
18061   15          R11     3           300   33

col:
FK_ID_COL_DMA   CANT_VAL    COD_VAL
18059           1134        R10
18059           1234        R3
18061           1111        R5

看起來像這樣:

id      CANT_VAL    COD_VAL    fk_id_chest   c1      c2
18059   18.56       R12        1             100     11
18059   1134        R10        1             0       0
18059   1234        R3         1             0       0
18060   11          R10        2             200     22
18061   15          R11        3             300     33
18061   1111        R5         3             0       0

請注意,ID 應該在由 id 和 c1 - c2 聯合的所有行上是通用的,因為對於列上的總和是不合適的。

如果我做一個:

   select CANT.ID,CANT.CANT_VAL,CANT.COD_VAL,CANT.FK_ID_CHEST,CANT.C1,CANT.C2 
       from cant
   union
   select COL.FK_ID_COL_DMA,COL.CANT_VAL,COL.COD_VAL,CANT2.FK_ID_CHEST,CANT2.C1,CANT2.C2 
       from col 
           inner join cant2 on cant2.id=COL.FK_ID_COL_DMA

我會得到一個:

   id      CANT_VAL    COD_VAL    fk_id_chest   c1      c2
   18059   18.56       R12        1             100     11
   18059   1134        R10        1             100     11
   18059   1234        R3         1             100     11
   18060   11          R10        2             200     22
   18061   15          R11        3             300     33
   18061   1111        R5         3             300     33

如果有人想知道 c1 的總和,那將是一個糟糕的結果!謝謝!

好的,我這樣解決它:

select CANT.ID,CANT.CANT_VAL,CANT.COD_VAL,CANT.FK_ID_CHEST,CANT.C1,CANT.C2 
       from cant
   union
   select COL.FK_ID_COL_DMA,COL.CANT_VAL,COL.COD_VAL,CANT2.FK_ID_CHEST,0,0 
       from col 
           inner join cant2 on cant2.id=COL.FK_ID_COL_DMA

謝謝!

引用自:https://dba.stackexchange.com/questions/120168