2017-05-05 104 views
0

您好我想从其他选择如何可以总结在Oracle 2个选择结果

我尝试一些方法总结两个结果,但我不能找到任何方式请帮我 这里是我的代码

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在表 怎么办?

+0

而你的问题是? – APC

+0

@APC我需要计数1和2的总和也需要显示计数1和计数2在表 – saman

回答

0

试试这个: -

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; 
+0

嗨。我需要显示计数1和计数2和表中的拖曳总和 – saman

+0

这个问题并不清楚。我以为你只想和名字 –

+0

总结对不起我的坏,所以你知道任何方式? – saman

1

“我需要数1和两个之和还我需要证明数1和表计数2”

嗯,以及唯一的硬关于这是LEFT JOIN意味着count2tab1.name1=tab2.name2上没有匹配时将为空。我们不能用空值来进行算术运算,因此您需要将其默认为零。这样的事情:

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