简体   繁体   English

在Oracle中查询(使用连接选择,求和和计数)

[英]Query in Oracle(select, sum and count using join)

Table 1 :- Registration table 表1:-登记表

Date_phy       |Name      |Address  |Diseases   |Mob    | Advance   |Code
12 March, 2017 |Navneet   |Delhi    |Fever      |12345  | 1000      |2
12 March, 2017 |Ashutosh  |Gurgaon  |fever      |4321   | 2000      |3
12 March, 2017 |Bitu      |Mumbai   |fever      |2345   | 1500      |4
15 March, 2017 |Rashmi    |pune     |fever      |34567  | 1600      |5
16 March, 2017 |komal     |jaipur   |fever      |43215  | 7000      |6

Table 2 :- Attendence Table 表2:-出席表

Code    |Name        |Date_phy
2       |Navneet     |13 March,2017
2       |Navneet     |14 March,2017
2       |Navneet     |15 March,2017
5       |Rashmi      |16 March,2017
6       |komal       |17 March,2017

Table 3:- Deposit Table 表3:-存款表

Code    |Amount   |Date_phy
2       |1000     |13 March,2017
2       |500      |14 March,2017
2       |500      |15 March,2017
5       |3000     |16 March,2017
6       |5000     |17 March,2017

I want following output in oracle. 我想在oracle中跟随输出。

Name     |Date of Joining    |Code  |Total Paid(advance+deposit) |Total Present
Navneet  |12 March,2017      |2     |3000                        |3
Ashutosh |12 March,2017      |3     |2000                        |0
Bitu     |12 March,2017      |4     |1500                        |0
Rashmi   |15 March,2017      |5     |4600                        |1
Komal    |16 March,2017      |6     |12000                       |1

I am not able to write a query. 我无法编写查询。 I have to merge three tables with sum and count function. 我必须合并具有求和和计数功能的三个表。 Tried every thing but failed. 尝试了一切,但失败了。 Could you please help me ? 请你帮助我好吗 ?

Query tried: 查询尝试:

SELECT pr.NAME, 
       pr.date_phy, 
       pr.disease 
FROM   physiofit_registration pr 
       LEFT JOIN (SELECT Sum(amount) totalAmount 
                  FROM   physiofit_amt_deposit 
                  GROUP  BY code) pd 
              ON pr.code = pd.code 
       LEFT JOIN (SELECT Count(*) totalatten, 
                  FROM   physiofit_attendence 
                  GROUP  BY code) pa 
              ON pr.code = pa.code; 

try below 尝试下面

SELECT pr.NAME,
       pr.date_phy,
       pr.code,
       pd.totalAmount+pr.advance as TotalPaid,
pa.totalatten as TotalPresent
FROM   physiofit_registration pr
       LEFT JOIN (SELECT code,Sum(amount) totalAmount
                  FROM   physiofit_deposit
           group by code
                  ) pd
              ON (pr.code = pd.code)
          LEFT JOIN (SELECT code,Count(*) totalatten
                  FROM   physiofit_attendence
                  GROUP  BY code) pa
           ON pr.code = pa.code; 

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

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