日期:2014-05-16  浏览次数:20875 次

由5张表里查询数据,一个有点不太简单的查询,请高手指点。
A表  字段如下


CSEL_FILECODE CSEL_SELLTYPE RTP_ID(企业编码) CID_CODE BTO_ID ZIS_STORECODE CSEL_OUTMAN CSEL_OUTDATE(出库日期) CSEL_MONEYCONFIRM CSEL_REASON CSEL_CHECKMAN CSEL_CHECKDATE CSEL_VOUCHERPRINT DH_TYPE DH_ID ZT_YEARNUM ZT_TICKETNUM THIS_UNLOCK CSEL_ISCANCEL CSEL_ISWRITEDISK

A_SUB表 字段如下


CSLS_SEQUENCODE CSL_FILECODE CBI_INVOICECODE CSLS_STARTNUM(发票开始号码) CSLS_YEARNUM CSLS_ENDNUM(发票结束号码) RTP_ID(企业编码) CSLS_NUM CSLS_SUM

B表 字段如下
CSL_FILECODE RTP_ID(企业编码) BTO_ID CIS_STORECODE CSL_OUTID CSL_OUTDATE(领票日期) CSL_MONEYCONFIRM CSL_REASON CSL_CHECKMAN CIH_VOUCHERNUM CSL_VOUCHERPRINT CSL_BOOKPRINT CSL_DHID ZT_INVOICECODE ZT_TICKETNUM ZT_YEARNUM THIS_UNLOCK

B_SUB表 字段如下

CSEL_FILECODE CSELS_FILECODE ZBI_INVOICECODE ZIC_INVOICECODE CSELS_NUM CSELS_STARTNUM CSELS_ENDNUM CSELS_SUM(领购数量) CSELS_SPARENUM

C表 字段如下
RTP_ID(企业编码)  RTP_NAME(企业名称)

先解释下逻辑关系 
1、 A_SUB 就是A表的附表,单独关联这两张表可以查询出(举了2笔数据做例子)

RTP_ID(企业编码)   CSEL_OUTDATE(出库日期)    sum(CSLS_ENDNUM(发票结束号码)-CSLS_STARTNUM(发票开始号码)+1)(这个是用发票结束号码-开始号码+1计算出来的)

123456                    2013-12-23                50
123456                    2013-12-25                90
2、B_SUB 就是B表的附表,单独关联这两张表可以查询出

RTP_ID(企业编码)  CSL_OUTDATE(领票日期)   CSELS_SUM(领购数量)
123456                    2014-1-3                 120
123456                    2014-1-5                 100                 

现在要求将以上数据组合到一起(A、B两个表中的出库日期和领票日期是不重复的)并且关联C表最终显示
企业编码   企业名称                 日期                本次领票量 
123456     友谊公司               2013-12-23                50
123456     友谊公司               2013-12-25                90
123456     友谊公司               2014-1-3                 120
123456     友谊公司               2014-1-5                 100 

望高手指点,高分奖励。
  
------解决方案--------------------
是这样吗:
select a1.RTP_ID,a2.CSEL_OUTDATE,SUM(C