表之间的关联 Oracle

    为了做报表,经常对数据库里数据的操作,应该算是自己的一点小小的经验.
    在这里为了方便叙述,表1 : 用A 表示 ;表2: 用B表示;
   A: A1,A2,A3
   B: B1,B2,B3
1.直连
  select A.* ,B.* from A,B where  A.A1=B.B1
  作用:求两个表中的交集.
2.左连或右连
  select A.*,B.* from A,B where  A.A1=B.B1(+) 或
  select A.*,B.* from A,B where  A.A1(+)=B.B1
  作用: 由表A ,带出表B中信息
       或由表B,带出表A中信息
3.并集
  select A.*,B.* from A,B where A.A1=B.B1(+)
  union
  select A.*,B.* from A,B where A.A1(+)=B.B1
  作用: 求两个表之间的并集.
4.分组
  select col1,col2,sum(col3) from A
   group by  col1,col2
5.SQL里的Switch
  select decode(col1,'男','N','女','Y','nothing') from A
  作用: 如果 表A 中col1里的数据是 "男" ,那输出"N",如果是 "女" ,则输出"Y",如果都不是那就输出"nothing"
6.SQL 里的 If
  select ( case when A>B then 'YES' else 'NO' end) from A
  作用: 如果A>B则输出'YES' 否则输出'NO'
7.将多行相关数据做为一行输出
  例:
  表A 数据 
    a  b  c1
    a  b  c2
    a  b  c3
    SELECT COL1, COL2, MAX(COL3)
  FROM (SELECT A.COL1
              ,A.COL2
              ,A.COL3 || ',' || LAG(A.COL3, 1, NULL) OVER(PARTITION BY A.COL1, A.COL2 ORDER BY A.COL3) || ',' || LAG(A.COL3, 2, NULL) OVER(PARTITION BY A.COL1, A.COL2 ORDER BY A.COL3) AS COL3
          FROM A)
 GROUP BY COL1, COL2
 
输出结果  : a  b  c3,c2,c1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值