2017-05-05 110 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 
(
    ... 
)