工作中遇到的SQL三(更新中)

--full join 用法

  SELECT B.CHORGNAME,A.BK_END_CR_BAL1,A.BK_END_CR_BAL2,A.BK_END_CR_BAL1+A.BK_END_CR_BAL2 
  FROM 
(SELECT CASE WHEN A.BK_OPUN_COD IS NOT NULL THEN A.BK_OPUN_COD ELSE B.BK_OPUN_COD END BK_OPUN_COD,
COALESCE(A.BK_END_CR_BAL1,0)BK_END_CR_BAL1,COALESCE(B.BK_END_CR_BAL2,0)BK_END_CR_BAL2
FROM 
(SELECT BK_OPUN_COD,sum(BK_END_CR_BAL)BK_END_CR_BAL1 FROM RPT_BKCVTDRT 
 WHERE RPT_HEAD_DATE='20131231' AND BK_FIRST_LEVEL_LG_COD='2017' AND BK_SECOND_LEVEL_LG_CD='00'
AND BK_THIRD_LEVEL_LG_CD='00' AND CORPORATION='803' AND BK_BAL_DIRE='1' AND BK_LG_CHAR='1' GROUP BY BK_OPUN_COD)A

FULL JOIN  
 
(SELECT BK_OPUN_COD,sum(BK_END_CR_BAL)BK_END_CR_BAL2 FROM rpt_bkcvtdrt 
 WHERE RPT_HEAD_DATE='20131231' AND BK_FIRST_LEVEL_LG_COD='2018' AND BK_SECOND_LEVEL_LG_CD='00'
AND BK_THIRD_LEVEL_LG_CD='00' AND CORPORATION='803' AND BK_BAL_DIRE='1' AND BK_LG_CHAR='1' GROUP BY BK_OPUN_COD)B
 
ON a.BK_OPUN_COD=b.BK_OPUN_COD
)A 

INNER JOIN 

UPR_ORGANIZATION B ON A.BK_OPUN_COD=B.CHORGCODE ORDER BY A.BK_OPUN_CO

full join 解释


SELECT * FROM ORG;
SELECT * FROM staff

运行后:

DEPTNUMBDEPTNAMEMANAGERDIVISIONLOCATION  
11pianzif160CorporateNew York  
15New England50EasternBoston  
20Mid Atlantic10EasternWashington  
38South Atlantic30EasternAtlanta  
42Great Lakes100MidwestChicago  
51Plains140MidwestDallas  
66Pacific270WesternSan Francisco  
84Mountain290WesternDenver  
88Head Office160CorporateNew York  
121Head Office160CorporateNew York  
111Head Office160CorporateNew York  
       
IDNAMEDEPTJOBYEARSSALARYCOMM
10Sanders20Mgr718357.5 
20Pernal20Sales818171.25612.45
30Marenghi38Mgr517506.75 
40O'Brien38Sales618006846.55
50Hanes15Mgr1020659.8 
60Quigley38Sales 16808.3650.25
70Rothman15Sales716502.831152
80James20Clerk 13504.6128.2
90Koonitz42Sales618001.751386.7
100Plotz42Mgr718352.8 
110Ngan15Clerk512508.2206.6
120Naughton38Clerk 12954.75180
130Yamaguchi42Clerk610505.975.6
140Fraye51Mgr621150 
150Williams51Sales619456.5637.65
160Molinare10Mgr722959.2 
170Kermisch15Clerk412258.5110.1
180Abrahams38Clerk312009.75236.5
190Sneider20Clerk814252.75126.5
200Scoutten42Clerk 11508.684.2
210Lu10Mgr1020010 
220Smith51Sales717654.5992.8
230Lundquist51Clerk313369.8189.65
240Daniels10Mgr519260.25 
250Wheeler51Clerk614460513.3
260Jones10Mgr1221234 
270Lea66Mgr918555.5 
280Wilson66Sales918674.5811.5
290Quill84Mgr1019818 
300Davis84Sales515454.5806.1
310Graham66Sales1321000200.3
320Gonzales66Sales416858.2844
330Burke66Clerk11098855.5
340Edwards84Sales7178441285
350Gafney84Clerk513030.5188


------

SELECT * FROM STAFF FULL JOIN ORG ON DEPTNUMB=DEPT


10Sanders20Mgr718357.5 20Mid Atlantic10EasternWashington
20Pernal20Sales818171.25612.4520Mid Atlantic10EasternWashington
30Marenghi38Mgr517506.75 38South Atlantic30EasternAtlanta
40O'Brien38Sales618006846.5538South Atlantic30EasternAtlanta
50Hanes15Mgr1020659.8 15New England50EasternBoston
60Quigley38Sales 16808.3650.2538South Atlantic30EasternAtlanta
70Rothman15Sales716502.83115215New England50EasternBoston
80James20Clerk 13504.6128.220Mid Atlantic10EasternWashington
90Koonitz42Sales618001.751386.742Great Lakes100MidwestChicago
100Plotz42Mgr718352.8 42Great Lakes100MidwestChicago
110Ngan15Clerk512508.2206.615New England50EasternBoston
120Naughton38Clerk 12954.7518038South Atlantic30EasternAtlanta
130Yamaguchi42Clerk610505.975.642Great Lakes100MidwestChicago
140Fraye51Mgr621150 51Plains140MidwestDallas
150Williams51Sales619456.5637.6551Plains140MidwestDallas
170Kermisch15Clerk412258.5110.115New England50EasternBoston
180Abrahams38Clerk312009.75236.538South Atlantic30EasternAtlanta
190Sneider20Clerk814252.75126.520Mid Atlantic10EasternWashington
200Scoutten42Clerk 11508.684.242Great Lakes100MidwestChicago
220Smith51Sales717654.5992.851Plains140MidwestDallas
230Lundquist51Clerk313369.8189.6551Plains140MidwestDallas
250Wheeler51Clerk614460513.351Plains140MidwestDallas
270Lea66Mgr918555.5 66Pacific270WesternSan Francisco
280Wilson66Sales918674.5811.566Pacific270WesternSan Francisco
290Quill84Mgr1019818 84Mountain290WesternDenver
300Davis84Sales515454.5806.184Mountain290WesternDenver
310Graham66Sales1321000200.366Pacific270WesternSan Francisco
320Gonzales66Sales416858.284466Pacific270WesternSan Francisco
330Burke66Clerk11098855.566Pacific270WesternSan Francisco
340Edwards84Sales717844128584Mountain290WesternDenver
350Gafney84Clerk513030.518884Mountain290WesternDenver
       88Head Office160CorporateNew York
       11pianzif160CorporateNew York
       111Head Office160CorporateNew York
       121Head Office160CorporateNew York
160Molinare10Mgr722959.2      
210Lu10Mgr1020010      
240Daniels10Mgr519260.25      
260Jones10Mgr1221234      




----

--角色级别和机构级别不对应

   SELECT a.username,a.ROLEID,a.STAID, b.BRLEVELS,c.BRLEVEL,c.BRID ,c.BRNAME    FROM IFS_USER a INNER
    JOIN IFS_ROLE b ON a.ROLEID=b.ROLEID INNER JOIN IFS_BRANCH c ON a.BRid=c.BRID WHERE b.BRLEVELS <>c.BRLEVEL 


--substr函数的用法


SELECT *  FROM IFS_STATION WHERE length(brlevels)>3   

01,03
01,03,07
01,03,07


SELECT posstr(brlevels,',')  FROM IFS_STATION WHERE length(brlevels)>3

3
3
3

SELECT substr(brlevels,1,posstr(brlevels,',')-1) FROM IFS_STATION WHERE length(brlevels)>3

01
01
01


-----------------

列变行,逗号分割

 SELECT * FROM IFSI_DISCUST_UPDATE WHERE custid='CN803100101621943'

CN803100101621943    UR80303053
CN803100101621943    UR80303319



SELECT A.CUSTID,
substr(VARCHAR(replace(replace(xml2clob(xmlagg(xmlelement(NAME a,A.OWNERID||','))),'</A>',''),'<A>','')),1,8000)OWNERID 
FROM 
IFSI_DISCUST_UPDATE A INNER JOIN IFS_USER B ON A.OWNERID=B.USERID 
 GROUP BY A.CUSTID  
 
 
 

CN803100101621943   UR80303053,UR80303319,


-------

一个update需连表



SELECT  oppstatus FROM IFS_OPPORTUNITY a INNER JOIN IFS_MARKETACT b
ON a.REFMARKETACT=b.MARKETACTID WHERE b.MARKETACTSTATE='03' AND a.oppstatus IN ('01','03')


将查出来的oppstatus 改为05



UPDATE IFS_OPPtest a SET a.OPPSTATUS='05'
WHERE EXISTS(SELECT 1 FROM   IFS_MARtesT b
where a.REFMARKETACT=b.MARKETACTID and b.MARKETACTSTATE='03' AND a.oppstatus IN ('01','03') )


----一个看着很别捏的sql,暂且记下吧


分组排序取组内第一条
SELECT DISTINCT CUSTOMERID, MANAGEORGID,a FROM (
SELECT   CUSTOMERID,MANAGEORGID,rank() over(PARTITION BY CUSTOMERID order by PUTOUTDATE DESC) a 
 FROM IFSI_CONTRACT 
WHERE businesstype LIKE '3%' AND PUTOUTDATE IS NOT NULL AND CUSTOMERID = '20060422000922' 
GROUP BY CUSTOMERID,MANAGEORGID,PUTOUTDATE
) WHERE A=1  


--



SELECT CUSTOMERID,COUNT(*) FROM (
SELECT  customerid,manageorgid FROM
( SELECT customerid,manageorgid,count(*) FROM IFSI_CONTRACT WHERE businesstype LIKE '3%'
 GROUP BY customerid,manageorgid HAVING count(*) >1 ) A ) B GROUP BY CUSTOMERID HAVING COUNT(*) >1


--

SELECT B.CUSTCODE,B.CUSTNAME,B.ENGNAME,B.BUSNTYPE,B.ECONCHAR,B.GOVNCERTNO,B.ENTPCODE,B.TAXNUM,B.LNCERTNO,
CASE WHEN B.CORCUSTCODE IS NOT NULL AND B.CORCUSTCODE<>'' THEN 'CN'||B.CORCUSTCODE ELSE B.CORCUSTCODE END LEGALCORID,
C.CUSTNAME LEGCUSTNAME,C.CERTTYPE,C.CERTCODE,B.REGCAP,
CASE WHEN B.ENTPSCAL='01' THEN '10' WHEN B.ENTPSCAL='02' THEN '05' WHEN B.ENTPSCAL IN('03','04') THEN '01' ELSE '1020' END CUSTSCALES 
FROM  IFSI_HXKHJBXX B LEFT JOIN  IFS_CUSTINFO C ON B.CORCUSTCODE=C.CUSTCODE





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值