【问题标题】:how can sum 2 select results in oracle如何在 oracle 中求和 2 选择结果
【发布时间】:2017-05-05 09:17:34
【问题描述】:

你好,我想把其他选择的两个结果相加

我尝试了一些方法,但我找不到任何方法请帮助我 这是我的代码

SELECT
name1,count1,count2FROM
(
    SELECT
        trade.name AS name1, COUNT(workorders.id) AS count1
    FROM      workorders
    RIGHT JOIN    trade
    ON trade.id = workorders.trade_id 
    AND     workorders.hcworkorderstat_id IN (
            SELECT     hcworkorderstat.id
            FROM       hcworkorderstat
            WHERE hcworkorderstat.code NOT IN ( 'CL','CANCEL' ))
    GROUP BY  trade.name
) tab1LEFT JOIN
(
    SELECT
        trade.name AS name2,
        COUNT(workorders.id) AS count2
    FROM
        workorders
    RIGHT JOIN
        trade
    ON
        workorders.trade_id = trade.id
    AND
        workorders.requesteddate BETWEEN '1391.01.15' AND '1396.10.15'
    GROUP BY
        trade.name
) tab2
ON tab1.name1=tab2.name2 

需要结果 count1+count2 我还需要在表中显示计数 1 和计数 2 怎么会这样?

【问题讨论】:

  • 你的问题是????
  • @APC 我需要计数 1 和两个的总和,我还需要在表中显示计数 1 和计数 2

标签: sql oracle oracle11g


【解决方案1】:

“我需要计数 1 和两个的总和,我还需要在表中显示计数 1 和计数 2”

嗯,唯一的难点是 LEFT JOIN 意味着当 tab1.name1=tab2.name2 上没有匹配项时,count2 将为空。我们不能对空值进行算术运算,因此您需要将其默认为零。像这样的:

SELECT
   name1, count1, count2, count1 + nvl(count2,0) as tot FROM
(
   ...
)

【讨论】:

    【解决方案2】:

    试试这个:-

    SELECT name1,count1, count2, (count_1+count_2) AS sum_of_counts
    FROM
    (
    SELECT name1,count1, count2, case when count1>0 then count1 else 0 end as count_1, 
    case when count2>0 then count2 else 0 end as count_2
    FROM
     (
        SELECT
            trade.name AS name1, COUNT(workorders.id) AS count1
        FROM      workorders
        RIGHT JOIN    trade
        ON trade.id = workorders.trade_id 
        AND     workorders.hcworkorderstat_id IN (
                SELECT     hcworkorderstat.id
                FROM       hcworkorderstat
                WHERE hcworkorderstat.code NOT IN ( 'CL','CANCEL' ))
        GROUP BY  trade.name
     ) tab1
    LEFT JOIN
     (
        SELECT
            trade.name AS name2,
            COUNT(workorders.id) AS count2
        FROM
            workorders
        RIGHT JOIN
            trade
        ON
            workorders.trade_id = trade.id
        AND
            workorders.requesteddate BETWEEN '1391.01.15' AND '1396.10.15'
        GROUP BY
            trade.name
     ) tab2
    ON tab1.name1=tab2.name2
    ) a;
    

    【讨论】:

    • 嗨。我需要在表中显示计数 1 和计数 2 以及拖车的总和
    • 问题中并不清楚。我以为你只想要名字的总和
    • 对不起,你知道吗?
    • 是的,总会有办法的。给我2-3分钟
    • 我已更新查询。不确定这是否可行。试试看告诉我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2019-11-20
    相关资源
    最近更新 更多