2016-05-17 40 views
0

我有兩個表t1和t2。我需要從每個表中獲得「COUNT」的聚合值和第三個表中的時間。使用sql連接數據時插入

t1

COUNT    TIME_AH 
2     17-MAY-16 12:00:00 
3     17-MAY-16 12:00:00 
2     17-MAY-16 12:00:00 
12     17-MAY-16 12:00:00 
2     17-MAY-16 12:00:00 
12     17-MAY-16 12:00:00 

t2

COUNT  TIME_ZH 
1   17-MAY-16 12:00:00 
22   17-MAY-16 12:00:00 
3   17-MAY-16 12:00:00 
4   17-MAY-16 12:00:00 

t3

OUTPUT_TABLE 

COUNT_AH COUNT_ZH TIME_AH 
19   30   17-MAY-16 12:00:00 

我曾嘗試下面的代碼,但它給人不正確的輸出。

select sum(t1.count), sum(t2.count), sysdate 
from t1, 
    t2 
where TIME_AH = (trunc(sysdate,'hh')); 

請幫忙。

+0

如果調整一些時間戳爲其它值,樣本數據會多大礦石意義描述問題! – jarlh

回答

0

您可以用UNION而不是JOINCASE EXPRESSION做到這一點:

SELECT SUM(CASE WHEN f.timetype = 'AH' THEN f.count else 0 END) as count_ah, 
     SUM(CASE WHEN f.timetype = 'ZH' THEN f.count else 0 END) as count_zh, 
     sysdate 
FROM(
    SELECT t.count,t.time_ah,'AH' as TimeType FROM t1 t 
    UNION ALL 
    SELECT s.count,s.time_zh,'ZH' FROM t2 s) f 
WHERE f.TIME_AH = trunc(sysdate,'hh'); 
0

嘗試這種方式

select sum(t.a),sum(t.b),t.sysdate from (
select sum(t1.count) as a, 0 as b, sysdate 
from t1 
where TIME_AH = (trunc(sysdate,'hh')) 
union all 
select 0 as a, sum(t2.count) as b, sysdate 
from t2 
where TIME_AH = (trunc(sysdate,'hh'))) as t group t.sysdate