0 0

sql高手请来,谁能一条sql查出这样的结果?5

table[student]

id name date money
1 张三001 20140501 10
2 张三002 20140502 20
3 张三003 20140503 30
4 张三004 20140504 40
5 张三005 20140505 50
6 张三001 20140502 15

查询结果:

id name 20140501 20140502 20140503 20140504 20140505
1 张三001 10 15      
2 张三002   20      
3 张三003     30    
4 张三004       40  
5 张三005         50
2014年5月13日 10:57
  • 大小: 18.8 KB
  • 大小: 22.1 KB

9个答案 按时间排序 按投票排序

0 0

采纳的答案

with t1 as
(select distinct name from student)

select t1.name,
(select money from student s where s.date = '20140101' and s.name = t1.name),
(select money from student s where s.date = '20140102' and s.name = t1.name),
(select money from student s where s.date = '20140103' and s.name = t1.name)
from t1

2014年5月13日 14:24
0 0

with t as (
select 1 as id,'张三001' as name,'20140501' da_te ,10 as money from dual
union all
select 2,'张三002','20140502',20 from dual
union all
select 3,'张三003','20140503',30 from dual
union all
select 4,'张三004','20140504',40 from dual
union all
select 5,'张三005','20140505',50 from dual
union all
select 6,'张三001','20140502',15 from dual
)
select * from (select min(id) over (partition by name) as id,name,da_te,money from t) t2
pivot(
sum(money)
for da_te in ('20140501','20140502','20140503','20140504','20140505')
)
order by id;

2014年6月15日 13:24
0 0

CREATE PROCEDURE pc(IN a VARCHAR(10),
                    IN b VARCHAR(10),
                    IN c VARCHAR(10),
                    IN d VARCHAR(10),
                    IN e VARCHAR(10))
SELECT t.id,t.name,   
sum((CASE WHEN t.date = a THEN t.money END)) AS a,   
sum((CASE WHEN t.date = b THEN t.money END)) AS b,   
sum((CASE WHEN t.date = c THEN t.money END)) AS c,   
sum((CASE WHEN t.date = d THEN t.money END)) AS d,   
sum((CASE WHEN t.date = e THEN t.money END)) AS e  
FROM student t   
GROUP BY t.name 

调用:
call pc('20140501','20140502','20140503','20140504','20140505' );

2014年5月13日 20:31
0 0

SELECT t.id,t.name,
sum((CASE WHEN t.date = '20140501' THEN t.money END)) AS '20140501',
sum((CASE WHEN t.date = '20140502' THEN t.money END)) AS '20140502',
sum((CASE WHEN t.date = '20140503' THEN t.money END)) AS '20140503',
sum((CASE WHEN t.date = '20140504' THEN t.money END)) AS '20140504',
sum((CASE WHEN t.date = '20140505' THEN t.money END)) AS '20140505'
FROM student t
GROUP BY t.name 

2014年5月13日 19:17
0 0

这个简单用case...when就可以搞定:
select id,name,
sum(case when date='20140501' then money end) as '20140501',
sum(case when date='20140502' then money end) as '20140502',
sum(case when date='20140503' then money end) as '20140503',
sum(case when date='20140504' then money end) as '20140504',
sum(case when date='20140505' then money end) as '20140505'
from student;

2014年5月13日 15:10
0 0

这个我感觉只能用过程了吧

2014年5月13日 14:21
0 0

创建个存储过程执行一下。
存储过程:

用游标遍历插入一张临时表中,遍历结束执行select,然后删除临时表中的记录。

执行存储过程。

2014年5月13日 14:10
0 0

我采用case表达式,如

select id,name,sum(case when date='20140501' then money else 0 end) as d1,.....
from student
group by id,name

2014年5月13日 13:50
0 0

我之前试过一种方法,就是使用:
多行合并成一行的函数,
然后再使用一列变多列的函数。

不知道有没有更好的办法

2014年5月13日 11:28

相关推荐

    SQL查找某记录的前后N条数据

    SQL查找某记录的前后N条数据 SQL查找某记录的前后N条记录

    SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示

    SQL Prompt 是一款拥有SQL智能提示功能的SQL Server和VS插件。SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为用户提供唯一合适的代码选择。自动脚本设置为用户提供了简单的代码...

    使用sql语句查询的数据按时间递增累加

    - 第一条记录:`REGION_NAME`为空,`ܺķ`为“һ”,`ƻʱ`为“2013-01-01”,`Ԥ`为300,`ʵʷ`为60,`ò`为-240,`ò컯`为-0.8。 - 第二条记录:`REGION_NAME`为空,`ܺķ`为“һ”,`ƻʱ`为“2013-02-01”,`Ԥ`...

    access 一次执行多条sql语句

    ### Access一次执行多条SQL语句 在Access数据库管理中,有时我们需要在同一事务中执行多条SQL语句来确保数据的一致性和完整性。例如,在更新某个记录后可能还需要执行其他操作,如增加日志记录等。本文将详细介绍...

    sqlserver自动生成sql语句工具sqlserver转oracle

    市场上存在许多这样的工具,如SSMA(SQL Server Migration Assistant) for Oracle,这是一个官方提供的迁移工具,能自动分析SQL Server的架构,并生成适合Oracle的DDL(Data Definition Language)和DML(Data ...

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...

    sql server 导入超大SQL脚本文件

    SQL Server 导入超大 SQL 脚本文件 SQL Server 是一种关系型数据库管理系统,广泛应用于各种行业。然而,在实际应用中,我们经常会遇到导入超大 SQL 脚本文件的问题。本文将介绍如何使用 osql 工具来导入超大 SQL ...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句

    接下来,使用CommandText属性添加SQL语句,可以是一条或多条。为了实现批处理,我们可以使用分号(`;`)作为每条SQL语句的分隔符。例如: ```csharp OracleCommand command = new OracleCommand(); command....

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...

    SQL高手速成.pdf

    根据提供的信息,我们可以总结出以下关于“SQL高手速成”的相关知识点: ### 一、SQL基础知识 #### SQL是什么? SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。它主要用于查询、更新、...

    SQLMonitor oracle跟踪SQL工具

    针对Oracle数据库,有一款名为SQLMonitor的工具,它专为跟踪和监控SQL语句而设计,帮助开发者和DBA们找出程序操作的数据表,从而提升程序性能并进行精准的问题定位。本文将深入探讨SQLMonitor的功能、使用方法及其在...

    SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    为了解决这个问题,我们可以创建一个字符串分割函数,通过直接查询就能将分割后的结果转换成多行数据。 1. 创建字符串分割函数 首先,我们需要创建一个字符串分割函数,名为 `StringSplit`。这个函数将接受两个...

    sql server客户端连接工具

    它提供了T-SQL编辑器和结果查看器,但功能相比SSMS较为有限。 3. **SQL Server Profiler**:这是一个诊断工具,用于监视SQL Server实例的事件,如查询执行、事务处理等,帮助找出性能瓶颈和问题。 4. **Data ...

    kettle链接SQL server驱动 sqljdbc

    确保正确配置这些参数后,Kettle就可以成功连接到SQL Server数据库,并能执行查询、插入、更新和删除等操作。同时,Kettle还支持数据预览、数据转换和ETL(抽取、转换、加载)过程,使得与SQL Server的数据交互变得...

    SqlServer连接工具

    SQL Server连接工具是数据库管理员和开发人员用于与Microsoft SQL Server交互的重要软件。这些工具提供了多种功能,包括数据库的创建、管理、查询、备份、恢复以及性能优化等。在本篇文章中,我们将深入探讨SQL ...

    Microsoft SQL Server Native Client (SQL Native Client)

    Microsoft SQL Server Native Client (SQL Native Client) 是一个同时包含 SQL OLE DB 访问接口和 SQL ODBC 驱动程序的动态链接库 (DLL)。它对使用本机代码 API(ODBC、OLE DB 和 ADO)连接到 Microsoft SQL Server ...

    SqlServer2005 打开 SqlServer2008 mdf文件

    Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...

    mysql转化成sql server sql转化成mysql工具

    这时,可以使用如`mss2sql.rar`这样的工具,它通常能帮助用户自动化地将MySQL的表结构、数据、视图、存储过程等对象转换为SQL Server兼容的脚本,从而实现迁移。 转换过程一般包括以下步骤: 1. 数据库对象分析:...

Global site tag (gtag.js) - Google Analytics