如何获得两行的总和

时间:2012-10-02 13:05:47

标签: sql oracle select insert

我在表格中有两行。我想添加第三行,其中包含总值。

我的桌子是

SELECT 
CONTROLLED_PERCENTAGE, EL_CLIENT_ID, ID, 
   PERC_ADJ_UNITS_RECEIVED, PHY_DIG_OR_TOTAL, RECORDING_ID, 
   SUM_UNITS_RECEIVED, UNIT_TYPE
FROM EL_CLIENT_REC_UNITS;

我会EL_CLIENT_IDUNIT_TYPEPHY_DIG_OR_TOTAL将是'PHY'或'DIG',我希望获得总数。我想将SUM_UNITS_RECEIVEDPERC_UNITS_RECEIVEDUNIT_TYPES相同的两个记录添加到EL_CLIENT_IDRECORDING_ID。然后,我想将此插入为具有相同UNIT_TYPERECORDING_ID的新行,但这次将PHY_DIG_OR_TOTAL设置为“TOTAL”;

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

SELECT 
    ID, 
    EL_CLIENT_ID, 
    RECORDING_ID, 
    UNIT_TYPE,
    PHY_DIG_OR_TOTAL, 
    CONTROLLED_PERCENTAGE, 
    SUM_UNITS_RECEIVED, 
    PERC_ADJ_UNITS_RECEIVED
FROM EL_CLIENT_REC_UNITS

UNION ALL -- concatenate sets

SELECT 
    NULL                         AS ID, -- No ID for this row
    EL_CLIENT_ID                 AS EL_CLIENT_ID, 
    RECORDING_ID                 AS RECORDING_ID, 
    UNIT_TYPE                    AS UNIT_TYPE, 
    'TOTAL'                      AS PHY_DIG_OR_TOTAL, 
    AVG(CONTROLLED_PERCENTAGE)   AS CONTROLLED_PERCENTAGE,  -- I don't know what to do with that
    SUM(PERC_ADJ_UNITS_RECEIVED) AS PERC_ADJ_UNITS_RECEIVED,
    SUM(SUM_UNITS_RECEIVED)      AS SUM_UNITS_RECEIVED
FROM EL_CLIENT_REC_UNITS
GROUP BY UNIT_TYPE, EL_CLIENT_ID, RECORDING_ID;

尝试使用Google GROUP BY SQL语句来了解有关此声明的更多信息。