SQL行列转换实战

SQL行列转换实战行列转换实例
SQL行列转换实战 表ttt有三个字段
SQL行列转换实战 seq --序列
SQL行列转换实战
jcxm --检查项目
SQL行列转换实战
zhi --
SQL行列转换实战

SQL行列转换实战 数据分别如下:
SQL行列转换实战 seq   jcxm   zhi
SQL行列转换实战------- -------- --------
SQL行列转换实战
11     1    0.50
SQL行列转换实战11     2    0.21
SQL行列转换实战11     3    0.25
SQL行列转换实战12     1    0.24
SQL行列转换实战12     2    0.30
SQL行列转换实战12     3    0.22
SQL行列转换实战
SQL行列转换实战 实现功能
SQL行列转换实战 创建视图时移动行值为列值
SQL行列转换实战
SQL行列转换实战
SQL行列转换实战create view v_view1
SQL行列转换实战as
SQL行列转换实战select seq,
SQL行列转换实战sum(decode(jcxm,1, zhi)) 检测项目1,
SQL行列转换实战sum(decode(jcxm,2, zhi)) 检测项目2,
SQL行列转换实战sum(decode(jcxm,3, zhi)) 检测项目3
SQL行列转换实战from ttt
SQL行列转换实战group by seq;
SQL行列转换实战
SQL行列转换实战 序号 检测项目1  检测项目2  检测项目3
SQL行列转换实战11     0.50    0.21     0.25
SQL行列转换实战12     0.24    0.30     0.22
SQL行列转换实战
SQL行列转换实战
SQL行列转换实战
SQL行列转换实战 技巧:
SQL行列转换实战 用THEN中的0和1来进行统计(SUM
SQL行列转换实战
SQL行列转换实战 jcxm zhi
SQL行列转换实战---- ----
SQL行列转换实战
a 1
SQL行列转换实战 b 1
SQL行列转换实战 a 3
SQL行列转换实战 d 2
SQL行列转换实战 e 4
SQL行列转换实战 f 5
SQL行列转换实战 a 5
SQL行列转换实战 d 3
SQL行列转换实战 d 6
SQL行列转换实战 b 5
SQL行列转换实战 c 4
SQL行列转换实战 b 3
SQL行列转换实战 求他的zhi既是1,也是3,也是5的jcxm
SQL行列转换实战 方法一
SQL行列转换实战select jcxm
SQL行列转换实战from ttt
SQL行列转换实战group by jcxm
SQL行列转换实战having sum(decode(zhi,1,-1,3,-1,5,-1,0)) = -3
SQL行列转换实战 方法二
SQL行列转换实战select jcxm from ttt
SQL行列转换实战group by jcxm having (sign(sum(decode(zhi,1,-1,0)))+
SQL行列转换实战sign(sum(decode(zhi,3,-1,0)))+sign(sum(decode(zhi,5,-1,0)))<=-3);
SQL行列转换实战
SQL行列转换实战----------
SQL行列转换实战
a
SQL行列转换实战 b
SQL行列转换实战 说明:
SQL行列转换实战sign()函数根据某个值是0、正数还是负数,分别返回0、1-1
SQL行列转换实战 所以可以用sign和decode来完成比较字段大小来区某个字段
SQL行列转换实战select decode(sign(字段1-字段2),-1,字段3,字段4) from dual;
SQL行列转换实战
SQL行列转换实战 sign是一个对于写分析SQL有很强大的功能
SQL行列转换实战 下面我对sign进行一些总结:
SQL行列转换实战 但属性student取0和1以外的值,或者student取两个以上的标法值,问题就不会这么简单了
SQL行列转换实战 解决办法就是特征函数(abs(),sign())
SQL行列转换实战
SQL行列转换实战 常用的特征算法
SQL行列转换实战 [A=B]=1abssign(A-B))
SQL行列转换实战 [A!=B]=abssign(A-B))
SQL行列转换实战 [A<B]=1sign1sign(A-B))
SQL行列转换实战 不能用-sign(A-B):因为如果不满足A<b则返回-1,而不是0,这样就不能用在字段选择上了
SQL行列转换实战 [A<=B]=sign(1sign(A-B))
SQL行列转换实战 [A>B]=1sign1sign(A-B))
SQL行列转换实战 [A>=B]=sign(1sign(A-B)))
SQL行列转换实战 [NOTα]=1-d [α]
SQL行列转换实战 [αANDb ]=d [α]*d [b ] (6)
SQL行列转换实战 [αOR b ]=sign(d [α]+d [b ]
SQL行列转换实战
SQL行列转换实战 例如:
SQL行列转换实战 A<B Decode( Sign(A-B), -1, 1, 0 )
SQL行列转换实战
SQL行列转换实战 A<=B Decode( Sign(A-B), 1, 0, 1 )
SQL行列转换实战
SQL行列转换实战 A>B Decode( Sign(A-B), 1, 1, 0 )
SQL行列转换实战
SQL行列转换实战 A>=B Decode( Sign(A-B), -1, 0, 1 )
SQL行列转换实战
SQL行列转换实战 A=B Decode( A, B, 1, 0 )
SQL行列转换实战 A between B and C Decode( Sign(A-B), -1, 0,
SQL行列转换实战 Decode(Sign(A-C), 1, 0, 1 ))
SQL行列转换实战 A is null Decode(A,null,1,0)
SQL行列转换实战 A is not null Decode(A,null,0,1) A in
SQL行列转换实战 (B1,B2,SQL行列转换实战,Bn) Decode(A,B1,1,B2,1,SQL行列转换实战,Bn,1,0)
SQL行列转换实战 nor LogA Decode( LogA, 0, 1, 0 )
SQL行列转换实战 (1-Sign(LogA))
SQL行列转换实战 LogA and LogB LogA * LogB
SQL行列转换实战 LogA or LogB LogA + LogB
SQL行列转换实战 LogA xor LogB Decode(Sign(LogA),Sign(LogB),0,1)
SQL行列转换实战 Mod(Sign(LogA),Sign(LogB),2
SQL行列转换实战
SQL行列转换实战
SQL行列转换实战>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SQL行列转换实战
SQL行列转换实战[NextPage]
SQL行列转换实战 另外一个关于成绩的分析例子
SQL行列转换实战
SQL行列转换实战SELECT
SQL行列转换实战SUM(CASE WHEN cj <60 THEN 1 ELSE 0 END) as "not passed",
SQL行列转换实战SUM(CASE WHEN cj BETWEEN 60 AND 79 THEN 1 ELSE 0 END) as
SQL行列转换实战 "passed",
SQL行列转换实战SUM(CASE WHEN cj BETWEEN 80 AND 89 THEN 1 ELSE 0 END) as
SQL行列转换实战 "good",
SQL行列转换实战SUM(CASE WHEN cj >=90 THEN 1 ELSE 0 END) as "Excellent"
SQL行列转换实战FROM cjtable;
SQL行列转换实战
SQL行列转换实战 decode用法2
SQL行列转换实战 表、视图结构转化
SQL行列转换实战 现有一个商品销售表sale,表结构为:
SQL行列转换实战month    char(6)      --月份
SQL行列转换实战
sell    number(10,2)    --月销售金额
SQL行列转换实战

SQL行列转换实战 现有数据为:
SQL行列转换实战200001  1000
SQL行列转换实战200002  1100
SQL行列转换实战200003  1200
SQL行列转换实战200004  1300
SQL行列转换实战200005  1400
SQL行列转换实战200006  1500
SQL行列转换实战200007  1600
SQL行列转换实战200101  1100
SQL行列转换实战200202  1200
SQL行列转换实战200301  1300
SQL行列转换实战
SQL行列转换实战 想要转化为以下结构的数据:
SQL行列转换实战year   char(4)      --年份
SQL行列转换实战
------------ ---------------------
SQL行列转换实战
-------------------
SQL行列转换实战
month1  number(10,2)   --1月销售金额
SQL行列转换实战
month2  number(10,2)   --2月销售金额
SQL行列转换实战
month3  number(10,2)   --3月销售金额
SQL行列转换实战
month4  number(10,2)   --4月销售金额
SQL行列转换实战
month5  number(10,2)   --5月销售金额
SQL行列转换实战
month6  number(10,2)   --6月销售金额
SQL行列转换实战
month7  number(10,2)   --7月销售金额
SQL行列转换实战
month8  number(10,2)   --8月销售金额
SQL行列转换实战
month9  number(10,2)   --9月销售金额
SQL行列转换实战
month10  number(10,2)   --10月销售金额
SQL行列转换实战
month11  number(10,2)   --11月销售金额
SQL行列转换实战
month12  number(10,2)   --12月销售金额
SQL行列转换实战

SQL行列转换实战 结构转化的SQL语句为:
SQL行列转换实战create or replace view
SQL行列转换实战 v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)
SQL行列转换实战as
SQL行列转换实战     select
SQL行列转换实战     substrb(month,1,4),
SQL行列转换实战     sum(decode(substrb(month,5,2),'01',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'02',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'03',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'04',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'05',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'06',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'07',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'08',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'09',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'10',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'11',sell,0)),
SQL行列转换实战     sum(decode(substrb(month,5,2),'12',sell,0))
SQL行列转换实战     from sale
SQL行列转换实战     group by substrb(month,1,4);
SQL行列转换实战
SQL行列转换实战 体会:要用decode /group by/ order by/sign/sum来实现不同报表的生成
SQL行列转换实战>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SQL行列转换实战 CASE应用
SQL行列转换实战
SQL行列转换实战1 1 部门a 800
SQL行列转换实战2 2 部门b 900
SQL行列转换实战3 3 部门a 400
SQL行列转换实战4 4 部门d 1400
SQL行列转换实战5 5 部门e 1200
SQL行列转换实战6 6 部门f 500
SQL行列转换实战7 7 部门a 300
SQL行列转换实战8 8 部门d 1000
SQL行列转换实战9 9 部门d 1230
SQL行列转换实战10 10 部门b 2000
SQL行列转换实战11 11 部门c 2000
SQL行列转换实战12 12 部门b 1200
SQL行列转换实战
SQL行列转换实战SELECT jcxm as 部门,COUNT(seq) as 人数,
SQL行列转换实战SUM(CASE SEX WHEN 1 THEN 1 ELSE 0 END) as 男,
SQL行列转换实战SUM(CASE SEX WHEN 2 THEN 1 ELSE 0 END) as 女,
SQL行列转换实战SUM(CASE SIGN(zhi-800) WHEN -1 THEN 1 ELSE 0 END) as
SQL行列转换实战 小于800元,
SQL行列转换实战SUM((CASE SIGN(zhi-800)*SIGN(zhi-1000)
SQL行列转换实战SQL行列转换实战/**//*用*来实现<和>功能*/
SQL行列转换实战WHEN -1 THEN 1 ELSE 0 END)+(CASE zhi
SQL行列转换实战WHEN 800 THEN 1 ELSE 0 END)) as 从800至999,
SQL行列转换实战SQL行列转换实战/**//*注意别名不能以数字开头*/
SQL行列转换实战SUM((CASE SIGN(zhi-1000)*SIGN(zhi-1200)
SQL行列转换实战WHEN -1 THEN 1 ELSE 0 END)+(CASE zhi
SQL行列转换实战WHEN 1000 THEN 1 ELSE 0 END)) as 从1000元至1199元,
SQL行列转换实战SUM((CASE SIGN(zhi-1200) WHEN 1 THEN 1 ELSE 0 END)
SQL行列转换实战+(CASE zhi WHEN 1200 THEN 1 ELSE 0 END)) as 大于1200元
SQL行列转换实战FroM ttt
SQL行列转换实战GROUP BY jcxm
SQL行列转换实战
SQL行列转换实战 部门名 人数 男 女 小于800元 从800至999 从1000元至1199元 大于1200元
SQL行列转换实战 部门a 3 2 1 2 1 0
SQL行列转换实战0
SQL行列转换实战 部门b 3 1 2 0 1 0
SQL行列转换实战2
SQL行列转换实战 部门c 1 1 0 0 0 0
SQL行列转换实战1
SQL行列转换实战 部门d 3 1 2 0 0 1
SQL行列转换实战2
SQL行列转换实战 部门e 1 1 0 0 0 0
SQL行列转换实战1
SQL行列转换实战 部门f 1 1 0 1 0 0
SQL行列转换实战0
SQL行列转换实战
SQL行列转换实战



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2006/02/10/328603.html,如需转载请自行联系原作者
上一篇:部分手机Toast不显示的解决办法


下一篇:grep 命令系列:从文件中搜索并显示文件名