简体   繁体   English

从oracle中的两个表中获取数据

[英]Fetching data from two tables in oracle

I have two result sets : 我有两个结果集:

Set 1: 第一组:

STUDENT| COUNT
------ | ------
mohit  | 4 
Rohit  | 2
Tanvi  | 2
Jhanvi | 1

Set 2: 第2组:

STUDENT| COUNT_STAR
------ | ------
mohit  | 2 
Rohit  | 3
Tanvi  | 1
Arjun  | 1
Abhay  | 3
Abhi   | 1

Expected Result Set : 预期结果集:

STUDENT| COUNT  | COUNT_STAR
------ | ------ | ----------
mohit  |  4     |  2
Rohit  |  2     |  3
Tanvi  |  2     |  1
Arjun  |  na    |  1
Abhay  |  na    |  3
Abhi   |  na    |  1
Jhanvi |  1     |  na

Can someone help me with the SQL Query for this ? 有人可以通过SQL查询帮助我吗?

you need a union for get the distinct name from both the table and left join for get the values for count an count_star 您需要一个联合以获取表中的唯一名称,并需要左连接以获取count的值count_star

  select T.STUDENT , table1.count, table2.count_star
  from  (

    select STUDENT
    from table1
    UNION 
    select STUDENT
    from table2
  ) T
  left join table1 on table1.student = t.student
  left join table2 on table1.student = t.student

Use a FULL OUTER JOIN to join two overlapping result sets: 使用FULL OUTER JOIN连接两个重叠的结果集:

select coalesce(table1.student, table2.student) as student
       , nvl( table1.count, 'na') as count
       , nvl( table2.star_count, 'na') as star_count
from table1
     full outer join table2
     on table1.student = table2.student

you can use FULL OUTER JOIN to get the required result- 您可以使用FULL OUTER JOIN获得所需的结果-

SELECT DECODE (a.STUDENT, NULL, b.STUDENT, a.STUDENT) STUDENT,
       a.COUNT,
       b.count_star
  FROM table1 a FULL OUTER JOIN table2 b ON a.STUDENT = b.STUDENT;

Hope this helps. 希望这可以帮助。

Following SQL is tested with Oracle 12G: 以下SQL已与Oracle 12G一起测试:

SELECT COALESCE (T1.STUDENT, T2.STUDENT) AS STUDENT,
       DECODE (T1.COUNT, NULL, 'na', T1.COUNT) COUNT,
       DECODE (T2.COUNT_STAR, NULL, 'na', T2.COUNT_STAR) COUNT_STAR
  FROM TABLE1 T1
       FULL OUTER JOIN TABLE2 T2 ON T1.STUDENT = T2.STUDENT;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM