一道sql 关于pivot的面试题

分析:其实它是对时间月份行转列的

表结构设计:

结果:

select Name,moth,ISNULL([01],0) as Value1,ISNULL([02],0) as Value2,ISNULL([03],0) as Value3 from (
select a.Name,CONVERT(varchar(4),moth,120) as moth,CONVERT(varchar(2),moth,100) as moth2,number from Table_Type as a
left join Table_SHUJU as b on a.id=b.id
) as table1 pivot (sum(number) for moth2 in([01],[02],[03])) as table2

效果图:

时间: 2024-12-14 11:55:50

一道sql 关于pivot的面试题的相关文章

一道SQL的面试题之联想

一道SQL的面试题之联想 本人工作在一家小型的民营企业,主要从事业务系统的日常维护,二次开发,菜鸟一枚.周五经理准备面试两个开发人员,据简历,都还比较不错,让经理产生了想法,于是准备了一套面试题目,给我们亮了一道SQL题目,非他之手,据出此题者说,如果面试者只能写出一种方法,基本可以pass.请读者仔细看题: 题目:如下表,用一条select语句求出所有课程在80分(含80分)以上的学生姓名,请写出所有可行方案.(注意:表名为sc,字段为name,kc,score) 这道题目并不陌生吧,相信大家

一道SQL语句的面试题目

今天一个朋友发了一道题目给我,我把此题目贴出来,以便大伙看看,共同研究研究. 题目: 已知关系模式: 1.s (sno,sname) 学生关系.sno 为学号,sname 为姓名2.c (cno,cname,cteacher) 课程关系cno 为课程号,cname 为课程名,cteacher 为任课教师3.sc(sno,cno,scgrade) 选课关系.scgrade 为成绩要求实现如下5 个处理:1.找出没有选修过“李明”老师讲授课程的所有学生姓名2.列出有二门以上(含两门)不及格课程的学生

SQL中PIVOT 行列转换

SQL中PIVOT 行列转换 本文导读:T-SQL语句中,Pivot运算符用于在列和行之间对数据进行旋转或透视转换,PIVOT命令可以实现数据表的列转行,同时执行聚合运算,UNPIVOT则与其相反,实现数据的行转列. PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值. 通俗简单的说:PIVOT就是行转列,UNPIVOT就是列传行 一.PIVOT实例 1

行转列:SQL SERVER PIVOT与用法解释

转自:http://www.cnblogs.com/lwhkdash/archive/2012/06/26/2562979.html 在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据: INSERT INTO WEEK_INCOME SELECT '星期一',1000 UNION ALL SELECT '星期二',2000 UNION

javascript基础修炼——一道十面埋伏的原型链面试题

javascript基础修炼--一道十面埋伏的原型链面试题 在基础面前,一切技巧都是浮云. 题目是这样的 要求写出控制台的输出. function Parent() { this.a = 1; this.b = [1, 2, this.a]; this.c = { demo: 5 }; this.show = function () { console.log(this.a , this.b , this.c.demo ); } } function Child() { this.a = 2;

汽车之家一道SQL 面试题,大家闲来无事都来敲一敲

写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一般都没有固定答案,大家可以按照自己的思路来试试,我在文章底部放出参考的链接. SQL笔试题 参考答案(我个人发在CSDN的帖子) http://bbs.csdn.net/topics/391091585

【转】一道SQL SERVER DateTime的试题

学习过上一篇SQL SERVER DateTime精度的文章后.再来做一道题. IF ('2011-07-31 00:00:00.000' BETWEEN '2011-07-01' and '2011-07-31 ')PRINT 'Yes'ELSEPRINT 'No' 结果是什么,如果你认为是Yes,那么你就上当了,哈哈.因为这不是两个日期类型在比较,这就是两个字符串在比较. 所以结果当然是NO. 如果要进行比日期比较,应该进行类型转换,如下比较: IF (CAST('2011-07-31 00

一道SQL面试题(行列互换)

有一个SQL题在面试中出现的概率极高,最近有学生出去面试仍然会遇到这样的题目,在这里跟大家分享一下. 题目:数据库中有一张如下所示的表,表名为sales. 年 季度 销售量 1991 1 11 1991 2 12 1991 3 13 1991 4 14 1992 1 21 1992 2 22 1992 3 23 1992 4 24 要求:写一个SQL语句查询出如下所示的结果. 年 一季度 二季度 三季度 四季度 1991 11 12 13 14 1992 21 22 23 24 我给出的答案是这

一道SQL笔试题:使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

S (SNO,SNAME,SDD,SAGE) SNO,SNAME,SDD,SAGE 分别代表学号.学 员姓名.所属单位.学员年龄 C (CNO,CNAME ) CNO,CNAME 分别代表课程编号.课程名称 SC(SNO,CNO,SCORE ) SNO,CNO,SCORE 分别代表学号. 所选修的 课程编号.学习成绩 三个表的数据如下: 问题: 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 自己写的SQL: SELECT SNO,SDD FROM S WHERE SNO IN( s