大家好,请看下面的查询,看看Oracle查询有什么问题。我已经使用了两个表,分别是Bill_mas和Remit_bill。非常感谢帮助。如何从Oracle中的查询中获取销售额和收款金额
查询:
SELECT x.sc_cd, x.rm_id, x.fm_id, x.bill_no, x.DELI_DT, X.SALE_NET, Y.RMT, Y.COLL
FROM
(
SELECT sc_cd, rm_id, fm_id, bill_no, DELI_DT, SUM(sale_net) SALE_NET
FROM BILL_MAS
WHERE DELI_DT BETWEEN '01-feb-15' and '28-feb-15'
AND BILL_NO = '754105'
AND sc_cd = '09'
AND SALE_CD NOT IN ('RS','IN','EX')
HAVING ROUND(SUM(SALE_NET),2) <= 1000
GROUP BY sc_cd, rm_id, fm_id, bill_no, DELI_DT
) X,
(
SELECT p.sc_cd, MAX(RMT_DT) RMT, SUM(p.COLL_AMT) COLL
FROM REMIT_BILL P
WHERE p.bill_no = '754105'
AND p.rmt_DT =
(
SELECT MAX(rmt_DT) FROM REMIT_BILL P2
WHERE P2.bill_no = P.BILL_NO
AND sc_cd = '09'
)
GROUP BY p.sc_cd, p.RMT_DT,p.COLL_AMT
) Y
WHERE X.bill_no = y.bill_no
AND X.sc_cd = y.sc_cd
ORDER BY 1
错误消息:
WHERE X.bill_no=y.bill_no
*
ERROR at line 18:
ORA-06553: PLS-306: wrong number or types of arguments in call to 'OGC_Y'
表:
SQL>
SQL> desc bill_mas
Name Null? Type
------------------------------- -------- ----
BILL_NO NOT NULL VARCHAR2(6)
BILL_DT NOT NULL DATE
ORDER_NO VARCHAR2(6)
ORDER_DT DATE
FP_ID NOT NULL VARCHAR2(5)
SC_CD NOT NULL VARCHAR2(2)
DIST_CD VARCHAR2(2)
THA_CD VARCHAR2(2)
UN_CD VARCHAR2(3)
CL_ID VARCHAR2(3)
SALE_CD NOT NULL VARCHAR2(2)
SALE_GR NOT NULL NUMBER(10,2)
SALE_NET NOT NULL NUMBER(10,2)
DELI_DT DATE
FL_MVH VARCHAR2(1)
USER_CD VARCHAR2(2)
W_DT DATE
CANCL VARCHAR2(1)
B_VAT NUMBER(9,2)
RM_ID VARCHAR2(5)
FM_ID VARCHAR2(5)
BS_CD VARCHAR2(4)
C_TYP VARCHAR2(1)
COLL_TYP VARCHAR2(1)
SQL> desc remit_bill
Name Null? Type
------------------------------- -------- ----
SC_CD NOT NULL VARCHAR2(2)
RMT_NO NOT NULL VARCHAR2(6)
RMT_DT DATE
BILL_NO NOT NULL VARCHAR2(6)
COLL_AMT NOT NULL NUMBER(10,2)
SQL>
查询与日期列p.rmt_dt:
SELECT t1.bill_no, t2.sc_cd, t2.RMT, t2.COLL
FROM REMIT_BILL t1 INNER JOIN
(
SELECT p.sc_cd sc_cd, MAX(RMT_DT) RMT, SUM(p.COLL_AMT) COLL
FROM REMIT_BILL P
--WHERE p.bill_no = '754105'
WHERE p.rmt_DT =
(
SELECT MAX(rmt_DT) FROM REMIT_BILL P2
WHERE P2.bill_no = P.BILL_NO
AND sc_cd = '09'
AND P.RMT_DT BETWEEN '01-FEB-15' AND '28-FEB-15'
)
GROUP BY p.sc_cd, p.RMT_DT,p.COLL_AMT
) t2
ON t1.sc_cd = t2.sc_cd AND t1.rmt_dt = t2.rmt
什么是每个表中的所有主键和外键? –
在查询中没有对y.bill_no的这种引用。 –
@Iftekhar一般而言,在发布后你不应该改变你的问题,因为它可以使已经完成的所有答案(和工作)失效。 –