17,377
社区成员
发帖
与我相关
我的任务
分享
select SYS_CONNECT_BY_PATH(memberid, '/') rn,leaderid ,memberid,level r
from avlmembers c
start with memberid in ( SELECT b.ORDERACCOUNT FROM custInvoiceTrans a, CustInvoiceJour b
WHERE SUBSTR (NLS_LOWER (A.dataareaid), 1, 3) = NLS_LOWER ('825')
AND SUBSTR (NLS_LOWER (B.dataareaid), 1, 3) = NLS_LOWER ('825')
AND SUBSTR (NLS_LOWER (a.dataareaid), 1, 3) = SUBSTR (NLS_LOWER (B.dataareaid), 1, 3)
AND SUBSTR (NLS_LOWER (a.SalesId), 1, 20) = SUBSTR (NLS_LOWER (B.SalesId), 1, 20)
AND SUBSTR (NLS_LOWER (a.InvoiceId), 1, 20) = SUBSTR (NLS_LOWER (B.InvoiceId), 1, 20)
AND SUBSTR (NLS_LOWER (B.avbillingcampaign), 1,11) = NLS_LOWER ('201311')
AND SUBSTR (NLS_LOWER (B.avcampaign), 1, 11) = NLS_LOWER ('201310')
AND a.invoicedate >= TO_DATE ('20070813', 'yyyymmdd')
AND a.LineHeader = '1'
AND B.CustGroup = 'CR'
AND (a.qty <> 0 OR (a.qty = 0 AND a.avaction = 1))
AND a.lineamount < 0
AND NOT EXISTS
(SELECT * FROM avlmembers d
WHERE SUBSTR (NLS_LOWER (d.dataareaid),1,3) = NLS_LOWER ('825')
AND SUBSTR (NLS_LOWER (d.dataareaid),1, 3) = SUBSTR ( NLS_LOWER (b.dataareaid),1, 3)
AND SUBSTR (NLS_LOWER (d.LeaderId),1,12) = SUBSTR (NLS_LOWER (b.ORDERACCOUNT),1,12))
GROUP BY b.orderaccount )
connect by prior c.leaderid =c.memberid and level <4
SELECT SUBSTR(RN,2,12) MEMBERACCOUNT, SUBSTR(RN,15,12) LEADER1 , SUBSTR(RN,28,12) LEADER2 ,LEADERID LEADER3, RN, MemberId,LeaderId, R FROM (
SELECT AA.*, ROW_NUMBER() OVER(PARTITION BY SUBSTR(RN,1,13) ORDER BY R DESC) K FROM (
SELECT SYS_CONNECT_BY_PATH(MEMBERID, '/') RN,LEADERID ,MEMBERID,LEVEL R
FROM AVLMEMBERS C
START WITH MEMBERID IN ( SELECT B.ORDERACCOUNT FROM BMSSA.CUSTINVOICETRANS A, BMSSA.CUSTINVOICEJOUR B
WHERE SUBSTR (NLS_LOWER (A.DATAAREAID), 1, 3) = NLS_LOWER ('825')
AND SUBSTR (NLS_LOWER (B.DATAAREAID), 1, 3) = NLS_LOWER ('825')
AND SUBSTR (NLS_LOWER (A.DATAAREAID), 1, 3) = SUBSTR (NLS_LOWER (B.DATAAREAID), 1, 3)
AND SUBSTR (NLS_LOWER (A.SALESID), 1, 20) = SUBSTR (NLS_LOWER (B.SALESID), 1, 20)
AND SUBSTR (NLS_LOWER (A.INVOICEID), 1, 20) = SUBSTR (NLS_LOWER (B.INVOICEID), 1, 20)
AND SUBSTR (NLS_LOWER (B.AVBILLINGCAMPAIGN), 1,11) = NLS_LOWER ('201311')
AND SUBSTR (NLS_LOWER (B.AVCAMPAIGN), 1, 11) = NLS_LOWER ('201310')
AND A.INVOICEDATE >= TO_DATE ('20070813', 'yyyymmdd')
AND A.LINEHEADER = '1'
AND B.CUSTGROUP = 'CR'
AND (A.QTY <> 0 OR (A.QTY = 0 AND A.AVACTION = 1))
AND A.LINEAMOUNT < 0
AND NOT EXISTS
(SELECT * FROM AVLMEMBERS D
WHERE SUBSTR (NLS_LOWER (D.DATAAREAID),1,3) = NLS_LOWER ('825')
AND SUBSTR (NLS_LOWER (D.DATAAREAID),1, 3) = SUBSTR ( NLS_LOWER (B.DATAAREAID),1, 3)
AND SUBSTR (NLS_LOWER (D.LEADERID),1,12) = SUBSTR (NLS_LOWER (B.ORDERACCOUNT),1,12))
GROUP BY B.ORDERACCOUNT )
CONNECT BY PRIOR C.LEADERID =C.MEMBERID AND LEVEL <4
) AA
) BB WHERE K = 1