精华内容
下载资源
问答
  • SELECT PRODUCT_NAME productName, PRODUCT_ID productId,${parameter.queryTime} timeFlag,MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'09') THEN AMOUNT ELSE 0 END) AS amount9,MAX(CASE REPORT_F...

    SELECT PRODUCT_NAME productName, PRODUCT_ID productId,${parameter.queryTime} timeFlag,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'09') THEN AMOUNT ELSE 0 END) AS amount9,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'10') THEN AMOUNT ELSE 0 END) AS amount10,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'11') THEN AMOUNT ELSE 0 END) AS amount11,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'12') THEN AMOUNT ELSE 0 END) AS amount12,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'13') THEN AMOUNT ELSE 0 END) AS amount13,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'14') THEN AMOUNT ELSE 0 END) AS amount14,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'15') THEN AMOUNT ELSE 0 END) AS amount15,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'16') THEN AMOUNT ELSE 0 END) AS amount16,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'17') THEN AMOUNT ELSE 0 END) AS amount17,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'18') THEN AMOUNT ELSE 0 END) AS amount18,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'19') THEN AMOUNT ELSE 0 END) AS amount19,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'20') THEN AMOUNT ELSE 0 END) AS amount20,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'21') THEN AMOUNT ELSE 0 END) AS amount21,

    MAX(CASE REPORT_FLAG WHEN CONCAT(#{parameter.queryTime},'22') THEN AMOUNT ELSE 0 END) AS amount22

    FROM

    S_REPORT_EB_WICKET o

    WHERE o.REPORT_FLAG>=CONCAT(#{parameter.queryTime},'09') AND o.REPORT_FLAG <= CONCAT(#{parameter.queryTime},'22')

    1a9e35df296f84c846d67e33c60f6512.png

    展开全文
  • 行转列 学生表(student) name class sex 小花 1 男 小明 1 女 小王 1 女 小孙 2 男 小张 2 男 小李 2 那 小红 3 女 小草 3 女 查询每个班级的男生和女生的数量 select class, sum(case ...

    行转列

    学生表(student)

    nameclasssex
    小花1
    小明1
    小王1
    小孙2
    小张2
    小李2
    小红3
    小草3

    查询每个班级的男生和女生的数量

    select class,
    sum(case when sex = '女' then 1 else 0 end),
    sum(case when sex = '男' then 1 else 0 end),
    count(1) 总人数
    from student
    group by class
    

    在这里插入图片描述

    列转行

    学生表(students)

    name语文数学英语
    小明999665
    小花989898
    小草989478

    具体实现代码

    select a.`name`,a.科目,a.分数 from
    (SELECT
        NAME,
        '语文' AS 科目 ,
    		MAX(语文) AS 分数
    FROM students GROUP BY NAME
    UNION
    SELECT
        NAME,
        '数学' AS 科目 ,
    		MAX(数学) AS 分数
    FROM students GROUP BY NAME
    UNION
    SELECT
        NAME,
        '语文' AS 科目 ,
    		MAX(英语) AS 分数
    FROM students GROUP BY NAME) a
    ORDER BY a.`NAME`
    

    在这里插入图片描述

    日期函数

    返回当前日期和时间

    select now();
    

    返回当前日期

    select curdate();
    

    返回当前日期data是星期几

    select dayofweek('2020-03-07');
    

    日期相减

    select datediff('2020-03-08','2020-03-01')
    

    计算时间

    select timediff('2021-03-08 00:00:00','2021-03-01 00:00:00')
    

    字符串转换为日期

    select str_to_date('01/09/00','%d/%m/%y');
    
    select date_format('2020-01-09','%y/%m/%d');
    select date_format('2020-01-09','%y-%m-%d');
    
    select time_format('09:02:00','%H:%i:%s');
    
    展开全文
  • 愿每一次的分享,都将值得期待今日推荐:假如现在有一张表table,如下:如果我们想查询出来zhang和wang最新日期的记录如果我们直接使用:SELECT * FROM table GROUP BY name ORDER BY date;查询结果如下:很明显,这...

    愿每一次的分享,都将值得期待

    今日推荐:

    假如现在有一张表table,如下:

    5801a3ef95fdb1fc906ee96f8e57f08a.png

    如果我们想查询出来zhang和wang最新日期的记录

    如果我们直接使用:

    SELECT * FROM table GROUP BY name ORDER BY date;

    查询结果如下:

    9ec0801ed406e1711ac087388e0fff02.png

    很明显,这不是我们想要的数据,原因是msyql已经的执行顺序是

    写的顺序:select ... from... where.... group by... order by..

    执行顺序:from... where...group by.... select ... order by...

    所以在order by拿到的结果里已经是分组的完的最后结果。 由from到where的结果如下的内容。

    377d34488e091cbb4f3f6534da73cd09.png

    到group by时就得到了根据category_id分出来的多个小组

    bafa9b2af5f112faab0c6524ba035a2c.png

    到了select的时候,只从上面的每个组里取第一条信息结果会如下

    aa2ec7fe75e925347cce7bcd76ffd2b2.png

    即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。 回到我的目的上 --分类中最新的信息 根据上面的分析,group by到select时只取到分组里的第一条信息。

    这里可以使用子查询的方法

    SELECT * FROM (SELECT * FROM table ORDER BY date desc) table1  GROUP BY name;

    50e6e66a35d32f73f4ca0119987b712d.png

    关注【挨踢小子】,让我们一起成长

    适合分享 | 值得留言

    展开全文
  • Mysql-sql行转列

    2021-01-18 19:23:02
    原始数据如下图所示:(商品的销售明细)date=业务日期;Item=商品名称;saleqty=销售数量-- 建立测试数据(表)create table test (Date varchar(10), item char(10),saleqty int);insert test values('2010-01-01','...

    原始数据如下图所示:(商品的销售明细)

    date=业务日期;Item=商品名称;saleqty=销售数量

    10f717cbafc895ea6e91200e9eb26aca.png

    -- 建立测试数据(表)

    create table test (Date varchar(10), item char(10),saleqty int);

    insert test values('2010-01-01','AAA',8);

    insert test values('2010-01-02','AAA',4);

    insert test values('2010-01-03','AAA',5);

    insert test values('2010-01-01','BBB',1);

    insert test values('2010-01-02','CCC',2);

    insert test values('2010-01-03','DDD',6);

    实现的方法和思路如下:两个方法

    -- 实现结果的静态SQL语句写法-- 整理报表需要的格式

    方法一:case item when x then xx when y then yy end

    select date,

    case item when 'AAA' then saleqty end as AAA,

    case item when 'BBB' then saleqty end as BBB,

    case item when 'CCC' then saleqty end as CCC,

    case item when 'DDD' then saleqty end as DDD

    from test;

    方法二:if(条件判断,成立结果,不成立结果)

    select date,

    if (item = 'AAA',saleqty,null) as AAA,

    if (item = 'BBB',saleqty,null) as BBB,

    if (item = 'CCC',saleqty,null) as CCC,

    if (item = 'DDD',saleqty,null) as DDD

    from test;

    0d9f2370ac6ad39e78c4f7dd2b3e5bc2.png

    -- 按日期汇总行

    select date,

    sum(case item when 'AAA' then saleqty end)as AAA,

    sum(case item when 'BBB' then saleqty end)as BBB,

    sum(case item when 'CCC' then saleqty end)as CCC,

    sum(case item when 'DDD' then saleqty end)as DDD

    from test group by date;

    select date,

    sum(if (item = 'AAA',saleqty,null)) as AAA,

    sum(if (item = 'BBB',saleqty,null)) as BBB,

    sum(if (item = 'CCC',saleqty,null)) as CCC,

    sum(if (item = 'DDD',saleqty,null)) as DDD

    from test group by date;

    2b9461b611ec38ec1b3f324045ec1e1e.png

    -- 处理数据:将空值的栏位填入数字0;

    select date,

    ifnull(sum(case item when 'AAA' then saleqty end) ,0)as AAA,

    ifnull(sum(case item when 'BBB' then saleqty end) ,0)as BBB,

    ifnull(sum(case item when 'CCC' then saleqty end) ,0)as CCC,

    ifnull(sum(case item when 'DDD' then saleqty end) ,0)as DDD

    from test group by date;

    select date,

    ifnull(sum(if (item = 'AAA',saleqty,null)),0) as AAA,

    ifnull(sum(if (item = 'BBB',saleqty,null)),0) as BBB,

    ifnull(sum(if (item = 'CCC',saleqty,null)),0) as CCC,

    ifnull(sum(if (item = 'DDD',saleqty,null)),0) as DDD

    from test group by date;

    dab791b9b977fd37a849d0226bfaccc1.png

    静态SQL语句编写完成!

    其实有一步骤有点多余:可以直接if(,,0),而不是if(,,null)

    select date,

    if (item = 'AAA',saleqty,0) as AAA,

    if (item = 'BBB',saleqty,0) as BBB,

    if (item = 'CCC',saleqty,0) as CCC,

    if (item = 'DDD',saleqty,0) as DDD

    from test;

    342db2792600f1feab0335e57f77311b.png

    select date,

    sum(if (item = 'AAA',saleqty,0)) as AAA,

    sum(if (item = 'BBB',saleqty,0)) as BBB,

    sum(if (item = 'CCC',saleqty,0)) as CCC,

    sum(if (item = 'DDD',saleqty,0)) as DDD

    from test group by date;

    01c57bf5de4230e5a5a491cde6398b78.png

    静态SQL语句编写完成!

    参考网址https://www.cnblogs.com/ShaYeBlog/p/3594517.html

    ================================================================================================================

    三月的时候就遇到了行转列。

    计算一个表中的字段被清洗和标准化被命中的比例和原因。

    转成行输出。

    979a8bc8e922fdc02262742b191aef72.png

    展开全文
  • Mysql利用group by分组排序MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法MySQL分组查询Group By实现原理详解详解MySQL中的分组查询与连接查询语句mysql 将字段time天/月/年...
  • I have sample data like this :ID Val Name Dt Status1, 145, 'Test1', '2020-01-28 02:18:00', 'open'2, 145, 'Test2', '2020-01-28 04:10:00', 'open'3, 145, 'Test3', '2020-01-28 05:...
  • 做项目时,用到了汇总统计的行转列,且表结构:具体存储过程脚本如下:-- =============================================-- Author:-- Create date:-- Description:-- ===========================================...
  • I have a database with 13000 rows. Each row contains the column 'date' which is now in this format (example): 2012-09-01 17:53:28, but I want them to be a TIMESTAMP.What query should I run to update a...
  • 查看了Mysql的API,发现Date_format是格式化日期的,看了Date_format()的具体说明后就用这个函数周统计,sql大致如下:selectDATE_FORMAT(check_date ,'%X-%V')dates,avg(weight)/10000weight from ho_body where ...
  • 环境要求:2005+ 在日常需求中经常会有行转列的事情需求处理,如果不是动态的行,那么我们可以采取case when 罗列处理。 在sql 2005以前处理动态行或的时候,通常采用拼接字符串的方法处理,在2005以后新增了pivot...
  • Mysql 日期转换星期

    2021-01-19 04:18:46
    mysql> SELECT something FROM table WHERE TO_DAYS... DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。 mysql> select DAYOFWEEK('1998-02-03'); ...
  • bitsCN.com【MySQL日期时间格式转换这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内: www.bitsCN.commysql> SELECT something FROM tableWHERE TO_DAYS(NOW()) - TO...
  • MySQL 按日期分表

    2021-01-18 19:04:41
    是时候补回来了MySQL做一个大表,由于要存历史记录,所以数据量很大,查询很慢。恰好查询的时候,又不需要时间太久的冷数据。现在将其实现原理提取成一个控制台小程序。首先,创建一个简单的数据库访问类。public ...
  • MySQL日期格式转换

    2021-01-18 19:06:51
    FORMAT(‘2016-01-16 22:23:00','%Y-%m-%d %H:%i:%s')1 2 3 4-> Saturday January 2016 -> 16th 16 Sat 16 01 Jan 016 -> 22 22 10 10:23:00 PM 22:23:00 00 6 -> 2016-01-16 22:23:00 format的格式都出来: %M 月...
  • 问题 今天数据给了一个新的需求,统计历史上每一天的总用户数量。 统计每一天的用户数量还好说,create_date 分组求和就好了,但是还得每天统计累计的数量,这可就麻烦了。 例如: 2020年10月07日 注册了 1... ... ...思路:
  • 此处的其他答案很好地用于计算具有特定日期范围的金额,然后按日期分组以获取计数.但是,我需要计算两列并按日期分组.例如,这是我尝试上班的查询:(SELECT COUNT(*) arrived, DATE(arrived) date, 'arrived' AS source...
  • MYSQL中的日期转换

    2021-01-18 23:46:24
    对于每个类型拥有的值范围以及并且...下面的查询选择了所有记录,其date_col的值是在最后30天以内:mysql> SELECT something FROM tableWHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;DAYOFWEEK(date)返回...
  • mysql日期输出格式出来:%a 缩写星期名%b 缩写月名%c 月,数值%D 带有英文前缀的月中的天%d 月的天,数值(00-31)%e 月的天,数值(0-31)%f 微秒%H 小时 (00-23)%h 小时 (01-12)%I 小时 (01-12)%i 分钟,数值(00-...
  • 语句: SELECT [月份],[日期],[入库单量],[入库及时率],[延误入库单量],[异常入库单量] FROM ( SELECT DataDate , PropertyText , DataValue FROM RPT_ReportProperty p WITH ( NOLOCK ) JOIN RPT_ReportData d ...
  • MySQL将时间戳直接转换成日期时间from_unixtime()是MySQL里的时间函数selectuid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d')frommembers以上例子是sql语句的例子,直接能将mysql的时间戳类型转换成...
  • 比如这个曲线统计,我也是借用了博客里的各位大大,然后按照自己项目需求做的,页面给前端怼数据去就,下面是步骤1,用户统计曲线图,如果其中某一天没有数据,曲线图的日期链接不起来,如图: 我的解决方法:靠...
  • 2 NAMEID,2 STOCK,'4-1-2014 ' [DATE] )TAB 将连接数据放入一个temperory表 SELECT N.NAME,S.[DATE],S.STOCK INTO #TABLE FROM #NAMES N JOIN #Stockdates S ON N.ID=S.NAMEID 获取枢轴 DECLARE @cols NVARCHAR ...
  • MySQL 日期与时间方面的函数 获得当前日期 时间转换 MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format) MySQL日期、天数)转换函数:to_days(date), from_days(days) MySQL (时间、秒...
  • MySQL 日期类型详解

    2021-01-19 13:45:42
    MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。日期类型 存储空间 日期格式 日期范围------------ --------- --------------------- -----------------------------------------datetime 8 bytes YYYY-MM...
  • Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文出了MYSQL常用日期函数与日期转换格式化函数1、DAYOFWEEK(date)2、WEEKDAY(date)3、DAYOFMONTH(date)4、DAYOFYEAR(date)5、MONTH(date)6、DAYNAME...
  • MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。select datediff('2008-08-08', '2008-08-01'); -- 7select datediff('2008-08-01', '2008-08-08'); -- -7一、MySQL 获得当前日期时间 函数1.1...
  • select date_add("2008-07-31",interval @mycnt :=@mycnt + 1 day) as day from t_prehandle_qeesoo_04 limit 31上面这个SQL就可以出8月份所有日期。上面SQL里的2008-07-31指的是起始日期,limit 31 是指加31天。t_...
  • MySQL查询中日期格式转换函数简介

    千次阅读 2020-12-19 03:36:20
    MySQL查询中对于日期进行转换需要用到UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date) 函数来进行操作,下面就为您详细介绍MySQL查询中日期格式转换函数的使用方法,供您参考。若无参数调用,则返回一个Unix timestamp ('...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,388
精华内容 43,755
关键字:

mysql按日期行转列

mysql 订阅