Oracle多表SQL查询
我有四张桌子。各表如下所示 库存档案:Oracle多表SQL查询,oracle,Oracle,我有四张桌子。各表如下所示 库存档案: accnt_no ac_name1 23 Prasun Kanti 45 Babu psdr_CD:(用于购买) swr_CD(用于销售) 公司 现在,我需要返回以下结果的sql查询: Accnt_no Name Total Buy Total Sale Balance 23 Prasun Kanti
accnt_no ac_name1
23 Prasun Kanti
45 Babu
psdr_CD:(用于购买)
swr_CD(用于销售)
公司
现在,我需要返回以下结果的sql查询:
Accnt_no Name Total Buy Total Sale Balance
23 Prasun Kanti 60 50 10
45 Babu 70 20 50
行。但是还有很多其他的方法,例如通过进行分区等
HTH尊敬的先生,谢谢您的回复。如果表格包含更多数据,则结果包含无效数据。事实上,我想根据comp_cd,trans_dt条件搜索结果。您能验证一下吗。@prasun您在问题中没有提到这一点,但您可以轻松地将另一个
JOIN
添加到comp
表中,并使用WHERE
子句过滤数据。我建议你看看SQL入门教程,比如帮助你。亲爱的先生,你能给你邮件id吗?然后我可以发送4个表的数据,你可以很容易地理解问题是什么。我运行了您的查询,但它没有显示有效的总购买、总销售和余额。假设psdr_CD包含128条记录,而swr_CD包含123条记录,则您的查询仅显示基于swr_CD的123行。亲爱的先生,此查询显示此报表用户请求的中断或检测到EOF。然后您中断了查询和/或丢失了数据库连接。
accnt_no no_shares trans_dt comp_cd
23 20 1-jan-2007 101
45 20 12-dec-2011 101
23 30 15-nov-2011 101
comp_cd comp_nm
101 AB BANK
Accnt_no Name Total Buy Total Sale Balance
23 Prasun Kanti 60 50 10
45 Babu 70 20 50
with t as
( select ip.accnt_no, ip.ac_name1, ps.no_shares buy, sw..no_shares sale
from inv_profile ip, psdr_cds ps, swr_cds sw
where ip.accnt_no = ps.accnt_no )
select t.accnt_no Accnt_no,
t.ac_name1 Name,
sum(t.buy) Total_buy,
sum(t.sale) Total_sale
(sum(t.buy)-sum(t.sale)) Balance
from t
group by t.accnt_no, t.ac_name1
SELECT
i.acct_no AS "Accnt_no",
i.ac_name1 AS "Name",
SUM(p.no_shares) AS "Total Buy",
SUM(s.no_shares) AS "Total Sale",
SUM(p.no_shares) - SUM(s.no_shares) AS "Balance"
FROM inv_profile i
INNER JOIN psdr_cds p ON i.accnt_no = p.accnt_no
INNER JOIN swr_cds s ON i.accnt_no = s.accnt_no
GROUP BY i.acct_no, i.ac_name1