创建了一张成绩表,如下图所示: 在oracle中,这两个函数我们都可以使用,代码及结果如下: decode用法: select Name,decode(Subject,'语文',1,'数学',2,'英语',3) 科目代码 from results; select Name,decode(Subject,'语文',1,'数学',2,3) 科目代码 from Results; case用法: select name, case when Subject='语文' th…
/* SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列名称>, FROM (<生成数据的 SELECT 查询>) AS <源查询的别名> PIVOT ( <聚合函数>(<要聚合的列>) FOR [<包含要成为列标题的值的列>] IN ( [第一个透视的列], [第二个透视的列], ... [最后一…
异同点 都可以对表行转列: DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, EXISTS等等(也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况.) DECODE方法 (Oracle公司独家) decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) --该函数的含义如下: IF 条件=值1 THEN RETURN(翻…
在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据: INSERT INTO WEEK_INCOME UNION ALL UNION ALL UNION ALL UNION ALL UNION ALL UNION ALL 一般我们最经常使用的查询是查询一周中每天或某几天的收入,例如查询周一至周日全部的收入: SELECT WEEK,INC…
1.PIVOT用法(行转列) select * from Table_Score as a pivot (sum(score) for a.name in ([语文],[数学],[外语],[文综],[理综])) as b 数据: id name score 语文 数学 外语 文综 理综 结果: id 语文 数学 外语 文综 理综 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 2.UNPIVOT用法(列转行) select orders,wee…