2014-11-14 3 views
0

я использовал следующий запросПодзапрос Oracle для извлечения данных из нескольких таблиц?

SELECT 
    a.cluster_cd, 
    (SELECT 
     Sum(BALANCE_AREA) 
    FROM 
     AGRI.plantation_TRAN p 
    WHERE 
     p.plot_cluster_cd = a.cluster_cd 
     AND trunc(a.agreement_date) = trunc(sysdate) 
     AND a.PLOT_NO = p.PLOT_NO 
     AND a.SEASON_CD = p.SEASON_CD 
     AND (a.SEASON_CD = 10)) as Today, 
    (SELECT 
     Sum(BALANCE_AREA) 
    FROM 
     AGRI.plantation_TRAN p 
    WHERE 
     p.plot_cluster_cd = a.cluster_cd 
     AND trunc(a.agreement_date) BETWEEN to_date('2014-10-24','YYYY-MM-DD') AND trunc(sysdate) 
     AND a.PLOT_NO = p.PLOT_NO 
     AND a.SEASON_CD = p.SEASON_CD 
     AND (a.SEASON_CD=10)) as Todate 
FROM 
    AGRI.agreement_TRAN a 

и я получил

cluster_cd  Today  Todate 
1    0.8   3.5 
1    2.6   8.2 
2    8.3   9.5 
3    0.2   2.6 
2    6.1   9.1 
3    9.8  11.0 

Но что мне нужно

сегодня и поле ФОРУМА должно быть подведено к отчетливым cluster_cd как

Cluster_CD  Today  Todate 
    1    123   456 
    2    125   789 
    3     45   458 
    4    456   789 

Сумма должна быть сделана на уникальном cluster_cd

+0

Я использовал 'отчетливый' к cluster_cd, но получил различались результат. – Mallesh

+0

Ваши результаты не имеют смысла. Возможно, вам следует показать образцы данных, поэтому более очевидно, как рассчитываются результаты. –

+0

Сумма @GordonLinoff не группируется на cluster_cd. Пожалуйста, обратите внимание на cluster_cd, имеются повторяющиеся значения Cluster_cd. Но мне нужны разные значения cluster_id – Mallesh

ответ

0

вы можете попробовать это:

Select cluster_cd,sum(today),sum(Todate) from(

SELECT a.cluster_cd, 
(select Sum(BALANCE_AREA) 
FROM AGRI.plantation_TRAN p 
where p.plot_cluster_cd=a.cluster_cd and trunc(a.agreement_date)=trunc(sysdate) and a.PLOT_NO =   p.PLOT_NO AND a.SEASON_CD = p.SEASON_CD AND (a.SEASON_CD=10)) as Today, 

(select Sum(BALANCE_AREA) 
FROM AGRI.plantation_TRAN p 
where p.plot_cluster_cd=a.cluster_cd and trunc(a.agreement_date) between to_date('2014-10- 
24','YYYY-MM-DD') and trunc(sysdate) and a.PLOT_NO = p.PLOT_NO AND a.SEASON_CD = p.SEASON_CD AND  (a.SEASON_CD=10)) as Todate 

from AGRI.agreement_TRAN a)t 

group by cluster_cd 
+0

Aakanksha по этому запросу вы не получите желаемого результата, показанного @Mallesh в вопросе –

+0

@DharmeshPorwal - Да, поскольку значения не имеют никакого смысла, я думал, что он просто написал его, чтобы заполнить таблицу. –

+0

Я думаю, вы должны прочитать третий комментарий, заданный mallesh, по вопросу –

0

Этот запрос может помочь:

SELECT a.cluster_cd, 
     sum(case when a.agreement_date >= trunc(sysdate) then nvl(BALANCE_AREA, 0) else 0 end) as Today, 
     sum(case when a.agreement_date < trunc(sysdate) then nvl(BALANCE_AREA, 0) else 0 end) as Todate 
FROM AGRI.agreement_TRAN a 
    LEFT JOIN AGRI.plantation_TRAN p 
    ON (p.plot_cluster_cd = a.cluster_cd 
     and a.PLOT_NO = p.PLOT_NO 
     and a.SEASON_CD = p.SEASON_CD 
     ) 
WHERE a.agreement_date between to_date('2014-10-24000000','YYYY-MM-DDHH24MISS') 
          and trunc(sysdate)+1-1/24/60/60 
    AND a.SEASON_CD=10 
GROUP BY a.cluster_cd; 
Смежные вопросы