- 时间:2017-09-11 整理:byzqy
题目:有个年度统计表,结构如下:
怎么样把这个表,查询成这样一个结果:
这是在面试过程中遇到的一个关于数据库的题,没有一点思路,不知它考查到的知识点是什么,如何下手?
网上搜了一下,有哥们儿说这是典型的“行转列问题”,好像用到“交叉表查询”,下面看看具体的代码!
文件:SQLQuery1.sql
/* 环境:Microsoft SQL Server 2012 工具: Microsoft SQL Server Management Studio 数据库: Interview 数据表: statistic 详情: year month amount 1991 1 1.1 1991 2 1.2 1991 3 1.3 1991 4 1.4 1992 1 2.1 1992 2 2.2 1992 3 2.3 1992 4 2.4 (char(10)) (int) (float) 查询成如下结果: year m1 m2 m3 m4 1991 1.1 1.2 1.3 1.4 1992 2.1 2.2 2.3 2.4 */ --方法1 SELECT year, SUM ( CASE WHEN month = 1 THEN amount ELSE 0 END ) AS m1, SUM ( CASE WHEN month = 2 THEN amount ELSE 0 END ) AS m2, SUM ( CASE WHEN month = 3 THEN amount ELSE 0 END ) AS m3, SUM ( CASE WHEN month = 4 THEN amount ELSE 0 END ) AS m4 FROM statistic GROUP BY year -->查询结果: year m1 m2 m3 m4 1991 1.1 1.2 1.3 1.4 1992 2.1 2.2 2.3 2.4 --方法2 SELECT