SQL 日期行转列问题~~~~~ 1C

图片说明这个怎么转啊,可以写sql代码吗,谢谢大家

0

2个回答

是给查成报表数据的意思嘛?先给你报表完善下才行的

0
qq_32177923
qq_32177923 我就想查出这个样子
2 年多之前 回复
SET DATEFIRST 1 -- 每周从星期一开始

;WITH
/* 测试数据 */
table1(id,name,checktime) AS (
    SELECT 10006,'a','2017-03-07' UNION ALL
    SELECT 10007,'b','2017-03-13' UNION ALL
    SELECT 10007,'b','2017-03-14' UNION ALL
    SELECT 10007,'b','2017-03-15' UNION ALL
    SELECT 10010,'c','2017-03-07' UNION ALL
    SELECT 10010,'c','2017-03-13' UNION ALL
    SELECT 10018,'d','2017-03-09 8:13' UNION ALL
    SELECT 10018,'d','2017-03-09 8:14' UNION ALL
    SELECT 10018,'d','2017-03-09 8:29'
),
a(id,name,checkday,[week],[weekday]) AS (
    SELECT DISTINCT
           id,
           name,
           CONVERT(varchar(10),checktime,120),
           DATEPART(week,checktime),
           DATEPART(weekday,checktime)
      FROM table1
)
SELECT id,
       name,
       [week],
       [1],[2],[3],[4],[5],[6],[7]
  FROM a
 PIVOT (
        MAX(checkday)
        FOR [weekday] IN ([1],[2],[3],[4],[5],[6],[7])
       ) p
         id name        week 1          2          3          4          5          6          7
----------- ---- ----------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
      10006 a             11 NULL       2017-03-07 NULL       NULL       NULL       NULL       NULL
      10007 b             12 2017-03-13 2017-03-14 2017-03-15 NULL       NULL       NULL       NULL
      10010 c             11 NULL       2017-03-07 NULL       NULL       NULL       NULL       NULL
      10010 c             12 2017-03-13 NULL       NULL       NULL       NULL       NULL       NULL
      10018 d             11 NULL       NULL       NULL       2017-03-09 NULL       NULL       NULL
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 求一SQL语句。 http://bbs.csdn.net/topics/390496661 create table #tab ( col1 char(10), col2
mysql 行转列 (带日期)
从网上找了很多行转列的。基本都是2行的行转列。不带日期分组的。 借鉴了另一个哥们的文章,实现了自己想要的结果,写出来大家可以参考。以后自己遇到同样情况,也可以有个备份 借鉴的地址为 https://www.cnblogs.com/gisblogs/p/3966822.html 处理过程: 我自己有的数据,这个已经是处理后的(源数据) 图1 [img]http:/...
重温SQL——行转列,列转行(转)
行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。
sql 行转列 语句
【一】行转列 1,查询原始的数据 /***这次练习的主题,行转列,列转行***/select * from Scores 2,得到姓名,通过group by select Student as '姓名'from Scoresgroup by Studentorder by Student 3,再加上max, case……when se
Sql 动态行转列
SQL行转列  关键字 :pivot 先来看一下测试表数据 select * from [dbo].[EL_ExhibitCharge] 其中 ChargeType有3个值  :  0:预付 1:收入 2:支出 我们期望根据   展会ID(ExhibitID),公司ID(CompanyID),预付,收入,支出   来查询数据。 sele
SQL行转列经典例子(转载)
行转列问题总结 1、行转列 ---1、最简单的行转列 /*    问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 李四 74   84   94 张三 74   83   93 */ --
在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)
最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 求考勤查询语句 http://bbs.csdn.net/topics/390709333 sql server 2000,考勤表: carddate
sql行转列、列转行
– 建表 CREATE TABLE StudentScores ( UserName NVARCHAR(20), – 学生姓名 Subject NVARCHAR(30), – 科目 Score FLOAT – 成绩 ) – 添加数据 INSERT IN...
Mysql 行转列,列转行
INSERT INTO StudentScores SELECT 'Nick', '语文', 80; INSERT INTO StudentScores SELECT 'Nick', '数学', 90; INSERT INTO StudentScores SELECT 'Nick', '英语', 70; INSERT INTO StudentScores SELECT 'Nick', '生物',...
sql行转列_列转行问题.
sql行转列_列转行问题.
postgre 动态行转列
postgresql crosstab(text source_sql, text category_sql) api 应用建表脚本 分数表 CREATE TABLE score ( "id" int8 NOT NULL, "item_id" int8 NOT NULL, "item_size_id" int8 DEFAULT (-1) NOT NULL, "score" numeric(18,
关于sql行转列的理解
原数据 想要的效果 先看下 下面的sql语句 主要是利用group by分组,将分组中的结果集作为参数去做查询 先写出静态sql SELECT NAME, MAX( CASE course WHEN '语文' THEN score END ) AS '语文', SUM( CASE course WHEN '数学' THEN score
SQL行转列、列转行
SQL行转列、列转行 这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。列转行问题同样也很常见。 一、整理测试数据 create table wyc_test( id int(32) not null auto_increment, name varchar(80) default null, date date default nu
行转列sql实例
行转列sql实例行转列sql实例行转列sql实例行转列sql实例行转列sql实例
Oracle行转列+排序
--1.删除临时表 drop table biz_bus_station_direct_0711; --2.将站点数据等放入临时表 create table biz_bus_station_direct_0711 as select ls.line_no line_no, bb.line_name line_name, t1.line_direct line_direct
Sql Server 行转列函数- Pivot 的使用教程
PIVOT 提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单和更具可读性。 以下是带批注的 PIVOT 语法: SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列名称>, FROM ...
mysql sql语句:行转列问题
存在表score,记录学生的考试成绩,如下图所示:                现要求以 学生姓名,语文,数学,英语 这样格式显示学生成绩,如下图所示                1、首先,使用case when函数输出单个课程的成绩case when course='语文' then score end as 语文 case when course='数学' then score end ...
SQL动态日期列生成并统计
输入日期区间:2015-08,2016-02 将返回列: UserName,2015-08,2015-09,2015-10,2015-11,2015-12,2016-01,2016-02
行转列通用存储过程
行转列通用存储过程 1.创建行转列通用存储过程 SQL代码:create or replace procedure row_to_col(tabname         in varchar2,                                        group_col       in varchar2,                               
SQL批量行转列已经多个字段拼接
第二步:运行一下SQL,就可以得出以下拼接(合并)效果。关键点是where jobId=V_WIP_Balance.jobId   。你想要第一个显示什么,这个ID就要在视图中查出来,不然会数据有误,而且查询速度非常慢。 select  S_Customer.nickName 客户, S_Job.partNum 生产型号, isnull(SO_Num.订单数 - CPCK.出库数量,0)
sql 行转列、分组、排序,
select * from ( select  concat(t2.supplier,'(',t1.from_addr,')') 供应商(矿点), t3.goods_name 货品, count(t1.id) 磅总单数, sum(case when t1.status='1'then 1 else 0 end) 待处理, sum(case when t1.status='2'then
sql行转列和列转行
最近建立数据立方体需要将表的数据结构进行转换,进行列转行,觉得用途还很大,所以就整理一下,当做自己的笔记拉。 1、列转行(主要) 表weatherdata结构: create table WEATHERDATA ( 路径 VARCHAR2(100), 日期 VARCHAR2(50), 时间 VARCHAR2(30), 温度 VARCHAR2(50), P0
MYSQL动态行转列
DROP TABLE IF EXISTS `score`; CREATE TABLE `score` ( `id` int(11) NOT NULL AUTO_INCREMENT, `class` varchar(255) DEFAULT NULL, `score` double DEFAULT NULL, `userid` int(11) DEFAULT NULL, PRIMA
SQL 面试经典问题 行列互相转化
SQL 面试经典问题 行列互相转化 1.行转列 select 姓名 as 姓名 , max(case 课程 when '语文' then 分数 else 0 end) 语文, max(case 课程 when '数学' then 分数 else 0 end) 数学, max(case 课程 when '物理' then 分数 else 0 end) 物理 from tb grou
oracle用存储过程 进行行转列(执行动态SQL语句)
---------------------------------------------------------------建表 ----------------判断student表是否存在 declare num number; --声明 参数num 类型number begin --开始 select count(1) into num from user_tables
Mysql中行转列和列转行
一、行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容。 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', subject ...
oracle行转列(动态行转不定列)
原文链接 /*物料 需要数量 需要仓库 现存量仓库 现存量仓库数量 批次  A1 2 C1 C1         20         123  A1 2 C1 C2         30         111  A1 2 C1 C2         20         222  A1 2 C1 C3         10         211  A2 3 C4 C1  
Oracle行转列、列转行的Sql语句总结
目录结构如下: 行转列 列转行 [一]、行转列   1.1、初始测试数据   表结构:TEST_TB_GRADE   Sql代码  create table TEST_TB_GRADE  (    ID        NUMBER(10) not null,    USER_NAME VARCHAR2(20 CHAR),    COURSE    VARCHAR2(20
Oracle 行转列两种方法
1.新建一个名为TEST表 2.向TEST表中添加数据 INSERT INTO TEST(STUDENT,COURSE,SCORE) select '张三','语文',78 from dual union select '张三','数学',87 from dual union select '张三','英语',82 from dual union select '张三','物理',
Oracle 关于oracle自带的行转列函数
前言: 环境是java+hibernate+oracle11g 目标是将某表中根据id分组后将name字段的值拼接到一列中,且用“,“进行分割   试过用 wm_concat() 结合 group by , 在pl/sql中执行正常, 但是在java程序运行时会报: ORA-22922:不存在的 LOB 值   1.没用hql查询,用的纯sql 2.也将字段转换为varchar类
Oracle行转列的一次经历
需求如下,由于系统项目改造,之前党员各个月份的成绩如下表所示: 存取数据如下: 新项目表结构作了调整,每个党员每一年一条记录,12个月份的数据变成了列字段,主键变成由年份和党员id构成,表结构如下: 月统计得分和季统计得分的数据存储是有格式要求的,如下: 由于需要数据迁移,我把之前的表放到新版数据库中,通过编写一共存储过程实现考核数据转换。(这次经历主要是目前统计考核规则有...
INFORMIX 行列转换
INFORMIX 行列转换要求描述如下:name      course          score ---------------------------------------张三      语文                74 张三      数学                99 张三      物理                93 李四      物理          
SQL行转列PIVOT关键字的用法
解释:
oracle数据库-行转列加排序
行转列排序之前: select * from lawtlegaladvisermanageedu t order by id asc; id EDUCATIONID EDUCATION PROFESSIONAL RELATEID 1 100005 116245 大专生 电子 100048 2 100013 116245 大专生 电信 10004
行转列:SQL SERVER PIVOT与用法解释
在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一些模拟数据: INSERT INTO WEEK_INCOME SELECT '星期一',1000 UNION ALL SELECT '星期二',2000 UNION ALL
SQL SERVER 行列转换(3)——动态转换
        前边介绍了静态转换和PIVOT、UNPIVOT转换的方式,这次介绍一下动态拼接转换的形式,有时候我们的数据不是固定的,可能会有多条,所以需要我们动态进行拼接实现,行转列测试数据:--测试数据 if not object_id(N'Tempdb..#T') is null drop table #T Go Create table #T([Name] nvarchar(22),[S...
SQL 2008行列转换的pivot--产生动态列
 突然间发现,已经好久没有写博客了,也好久没用SQLServer进行开发了。由于目前项目开发的原因,对于SQL Server才重视起来。发现SQL Server也引进了不少新的东西,现将一个不错的动态行列转换的例子给大家分享一下,行列转换的函数为:pivot,unpivot 转自:  http://www.2cto.com/database/201209/153233.html
sqlserver行转列与列转行(PIVOT与UNPIVOT)
PIVOT用于将列值旋转为列名(即行转列),在SQLServer 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) )   ...
mysql行转列(综合利用if + sum)---为解决OSC的一个朋友的问题
mysql用sum+if 完成行转列(行表数据如下) 首先思考如何创建出列结构 [sql] view plaincopy SELECT       NAME AS '姓名',       IF(type = '语文', score, 0) AS yuwen,       IF(type = '数学', score, 0) AS
PL/SQL 实现行列转换
这篇博文写的是简单的行列转换的,以一个具体的例子来给出。   以前在论坛上有人问过相关的问题,上面的回答五光十色,有很多是可行的,当然更多的是自以为很高端,实际却不着边际的回答。下面进入正题。 part1:列转行。需求: 示例给出这么一张表: 表定义如下: create table TEST_TB_GRADE ( ID NUMBER(
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题