精华内容
下载资源
问答
  • sql 多列转单行

    2018-08-14 18:01:15
    多行单列,建新表student1: create table student1 as select id from student union all select name from student union all select age from student;   查询新表: select * from student1...

    建表student:

    create table student(
    id varchar(100),
    name varchar(100),
    age varchar(100)
    );

    插入数据:
    insert into student values('1','a','10');
    insert into student values('2','b','20');
    insert into student values('3','c','30');

    此刻查询表:

    select * from student;

    多行转单列,建新表student1:

    create table student1 as
    select id from student
    union all
    select name from student
    union all
    select age from student;

     

    查询新表:

    select * from student1;

    得到:

    展开全文
  • oracle多行转单行多列

    千次阅读 2018-11-21 09:45:09
    oracle多行转单行多列(列数需要固定) 需求:从A成B A: B: 需要用到以下函数:wm_concat(多行成一列)、case when then else end、regexp_substr sql如下: SELECT material_code, store_id, case ...

    oracle多行转单行多列(列数需要固定)

    需求:从A转成B
    A:
    在这里插入图片描述
    B:
    在这里插入图片描述

    需要用到以下函数:wm_concat(多行转成一列)、case when then else end、regexp_substr

    sql如下:

    	SELECT material_code,
                     store_id,
                     case
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,1) = '好件位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 1)
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,2) = '好件位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 2)
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),
                                          '[^,]+',1,3) = '好件位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 3)
                       else
                        ''
                     END good,
                     case
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,1) = '坏件位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 1)
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,2) = '坏件位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 2)
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,3) = '坏件位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 3)
                       else
                        ''
                     END bad,
                     case
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,1) = '待修位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 1)
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,2) = '待修位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 2)
                       WHEN REGEXP_SUBSTR(wm_concat(shipping_space),'[^,]+',1,3) = '待修位' THEN
                        REGEXP_SUBSTR(wm_concat(place_note), '[^,]+', 1, 3)
                       else
                        ''
                     END repair
                from t_spt_material_place t 
                ---若要查全部数据则去掉
                where t.material_code='103010001'
               group by material_code, store_id;
    
    展开全文
  • SQL 代码如下所示: 第一种 select max(case when F1%3=1 then F1 else 0 end) a, max(case when F1%3=2 then F1 else 0 end) b, max(case when F1%3=0 then F1 else 0 end) c from HLR151 group by (F1-1)/3 效果 ...
  • 实现由多行转化为多列显示,适合初级学者参考学习
  • sql 一行数据转多列

    2017-09-05 15:08:00
    with cte as ( select ' a ' as [ 1 ], ' b ' as [ 2 ], ' c ' as [ 3 ], ...递归查询,将一行数据的多列转换成多行多列 转载于:https://www.cnblogs.com/li-lun/p/7478711.html
     with cte as
    (
    select 'a' as [1],'b' as [2],'c' as [3],'d' as [4],'e' as [5]
    )
    
    select '1'    as ItemName,
       [1]    as value
    from cte
    union all
    select '2'    as ItemName,
       [2]    as value
    from cte

    递归查询,将一行数据的多列转换成多行多列

    转载于:https://www.cnblogs.com/li-lun/p/7478711.html

    展开全文
  • sybase数据库是不支持group_concat函数的,此文件为sybase存储过程样例,可以将多行信息按标识合并为一行多列
  • SQL 单行函数输出

    2019-05-25 16:17:14
    SQL中有不同类型的函数,包括单行函数和多行函数。单行函数只对单个行进行操作,每行返回一个结果。多行函数可以操作行组来为每组行提供一个结果。 函数使基本查询更强大,本文主要介绍其中的单行函数,它侧重于...

    SQL 函数
    函数是SQL的一个非常强大的特性:
    对数据进行计算
    修改单个数据项
    操作行组的输出
    格式化显示日期和数字
    转换列数据类型

    在SQL中有不同类型的函数,包括单行函数和多行函数。单行函数只对单个行进行操作,每行返回一个结果。多行函数可以操作行组来为每组行提供一个结果。
    函数使基本查询更强大,本文主要介绍其中的单行函数,它侧重于单行字符、数字和日期函数。

    单行函数:

    1. 应用范围
    用于操作数据项。接受一个或多个参数,并为查询返回的每一行返回一个值。可以是下列之一:
    用户提供的值
    变量值
    列名
    表达式

    2. 特点
    对查询中返回的每一行执行操作
    每行返回一个结果
    可能返回与引用的数据类型不同的数据值
    可能需要一个或者多个参数
    可用于SELECT,WHERE,and ORDER BY 子句;可以嵌套

    3. 主要分类
    a 字符函数:接受字符输入,可以同时返回数字值和数字值

    b 数字函数:接受数字输入并返回数值

    c 日期函数 :操作日期数据类型的值(所有日期函数返回的值为日期数据类型,但 MONTHS_BETWEEN 函数除外,它返回一个数字。

    1 字符函数
    主要包括 大小写转换函数 字符处理函数
    LOWER CONCAT
    UPPER SUBSTR
    INITCAP LENGTH
    INSTR
    LPAD | RPAD
    TRIM
    REPLACE
    大小写转换函数

    小写转换:
    SQL> select ename,lower(ename)
    2 from emp;

    ENAME      LOWER(ENAM
    ---------- ----------
    SMITH      smith
    ALLEN      allen
    WARD       ward
    JONES      jones
    MARTIN     martin
    BLAKE      blake
    CLARK      clark
    SCOTT      scott
    KING       king
    TURNER     turner
    ADAMS      adams
    JAMES      james
    FORD       ford
    MILLER     miller
    
    14 rows selected.
    

    首字母大写转换:

    SQL> select ename,initcap(ename)
      2  from emp; 
    
    ENAME      INITCAP(EN
    ---------- ----------
    SMITH      Smith
    ALLEN      Allen
    WARD       Ward
    JONES      Jones
    MARTIN     Martin
    BLAKE      Blake
    CLARK      Clark
    SCOTT      Scott
    KING       King
    TURNER     Turner
    ADAMS      Adams
    JAMES      James
    FORD       Ford
    MILLER     Miller
    
    14 rows selected.
    

    字符控制函数

    concat 函数:将值连接在一起(使用concat只能使用两个参数)

    SQL> select concat('good ','dba') from dual;
    
    CONCAT('
    --------
    good dba
    

    substr 函数: 取一个确定长度的字符串

     SQL> select substr('oracle',1,3) from dual;
    
    SUB
    ---
    ora
    

    length 函数: 将字符串的长度显示为数值

    SQL> select length('oracle') from dual;
    
    LENGTH('ORACLE')
    ----------------
                   6
    

    instr 函数: 后面字符串在前面字符串第一次出现的位置,instr 经常来做判断,判断一个字符串是否在另外一个字符串中。

    SQL> select instr('oracle','a') from dual;
    
    INSTR('ORACLE','A')
    -------------------
                      3
    

    lapd 、 rpad 函数:左补全, 右补全
    使用字符表达式返回左、右填充到n个字符长度的表达式

    SQL> select sal,lpad(sal,4,0),rpad(sal,4,0) from emp;
    
           SAL LPAD(SAL RPAD(SAL
    ---------- -------- --------
           800 0800     8000
          1600 1600     1600
          1250 1250     1250
          2975 2975     2975
          1250 1250     1250
          2850 2850     2850
          2450 2450     2450
          3000 3000     3000
          5000 5000     5000
          1500 1500     1500
          1100 1100     1100
           950 0950     9500
          3000 3000     3000
          1300 1300     1300
    
    14 rows selected.
    

    replace 函数:替换函数 查找字符,并进行替换字符

    SQL> select replace(13199105196,19910519,'*') from dual;
    
    REPLACE(130
    -----------
    13*6
    

    trim 函数 :从字符串中修剪开头或结尾的字符

    SQL> select trim(' hello ') from dual;
    
    TRIM(
    -----
    hello
    

    数值函数:
    round函数 : 四舍五入到制定的十进制值

     SQL> select round(324.43288,3) from dual;
    
    ROUND(324.43288,3)
    ------------------
               324.433
    
    SQL> select round(43.424,-1) from dual;
    
    ROUND(43.424,-1)
    ----------------
                  40
    
    SQL> select round(47.3242,-1) from dual;
    
    ROUND(47.3242,-1)
    -----------------
                   50
    

    trunc 函数:截断到制定的十进制值

    SQL> select trunc(45.957,2) from dual;
    
    TRUNC(45.957,2)
    ---------------
              45.95
    
    SQL> select trunc(47.4323,-1) from dual;   
    
    TRUNC(47.4323,-1)
    -----------------
                   40
    SQL> select trunc(354.4323,2) from dual;
    
    TRUNC(354.4323,2)
    -----------------
               354.43
    

    mod 函数: 返回余数

    SQL> select mod(1600,300) from dual;
    
    MOD(1600,300)
    -------------
              100
    

    日期函数

    Oracle内部使用数字存储日期:世纪、年、月、日、小时
    默认的日期显示格式为 DD-MON-RR

    sysdate 函数 :SYSDATE是一个日期函数,它返回当前数据库服务器的日期和时间。
    可以像使用任何其他列名一样使用SYSDATE

    修改当前session日期格式

    alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss day’;

    日期的算术运算
    在日期上加上或减去一个数字结果仍是日期
    两个日期相减返回日期之间的相差天数
    可以用小时数除以24,可以加小时到日期上

    # 1天以后 系统时间加1天

    SQL> select sysdate+1 from dual;
    
    SYSDATE+1
    ---------
    23-MAY-19
    

    #1小时后

    SQL> select sysdate,sysdate+1/24 from dual;
    
    SYSDATE             SYSDATE+1/24
    ------------------- -------------------
    2019-05-22 18:48:45 2019-05-22 19:48:45
    

    #1分钟后

    SQL> select sysdate,sysdate+1/24/60 from dual;
    
    SYSDATE             SYSDATE+1/24/60
    ------------------- -------------------
    2019-05-22 18:49:19 2019-05-22 18:50:19
    

    日期操作函数
    months_between : 两个日期相差的月数

    SQL> select empno,ename,sal,months_between(sysdate,hiredate) months from emp;
    
         EMPNO ENAME             SAL     MONTHS
    ---------- ---------- ---------- ----------
          7369 SMITH             800 461.186616
          7499 ALLEN            1600 459.089842
          7521 WARD             1250        459
          7566 JONES            2975 457.670487
          7654 MARTIN           1250 451.831778
          7698 BLAKE            2850 456.702745
          7782 CLARK            2450 455.444681
          7788 SCOTT            3000   385.1221
          7839 KING             5000 450.186616
          7844 TURNER           1500 452.476939
          7876 ADAMS            1100 383.993068
    
         EMPNO ENAME             SAL     MONTHS
    ---------- ---------- ---------- ----------
          7900 JAMES             950 449.638229
          7902 FORD             3000 449.638229
          7934 MILLER           1300 447.993068
    
    14 rows selected.
    

    add_months 函数 : 向指定日期中加上若干月数

    #一个月后的现在

    SQL> select sysdate,add_months(sysdate,1) from dual;
    
    SYSDATE             ADD_MONTHS(SYSDATE,
    ------------------- -------------------
    2019-05-22 18:52:09 2019-06-22 18:52:09
    

    #一年后

    SQL> select sysdate,add_months(sysdate,12) from dual;
    
    SYSDATE             ADD_MONTHS(SYSDATE,
    ------------------- -------------------
    2019-05-22 18:52:45 2020-05-22 18:52:45
    

    #一年前

    SQL> select sysdate,add_months(sysdate,-12) from dual;
    
    SYSDATE             ADD_MONTHS(SYSDATE,
    ------------------- -------------------
    2019-05-22 18:53:23 2018-05-22 18:53:23
    

    next_day 函数 : 指定日期的下一个日期

    #从当前时间起下一个周一
    SQL> select next_day(sysdate,‘MONDAY’) from dual;

    NEXT_DAY(SYSDATE,'M
    -------------------
    2019-05-27 18:54:18
    

    #从当前时间起下一个周一

    SQL> select next_day(sysdate,2) from dual;
    
    NEXT_DAY(SYSDATE,2)
    -------------------
    2019-05-27 18:57:13
    

    last_day 本月的最后一天

    #当前时间月份的最后一天

    SQL> select sysdate,last_day(sysdate) from dual;
    
    SYSDATE             LAST_DAY(SYSDATE)
    ------------------- -------------------
    2019-05-22 18:58:26 2019-05-31 18:58:26
    

    round : 日期四舍五入

    #系统时间天数取整,取到天

    SQL> select sysdate,round(sysdate) from dual;
    
    SYSDATE             ROUND(SYSDATE)
    ------------------- -------------------
    2019-05-22 18:59:52 2019-05-23 00:00:00
    

    #系统时间分钟取整

    SQL> select sysdate,round(sysdate,'mi') from dual;
    
    SYSDATE             ROUND(SYSDATE,'MI')
    ------------------- -------------------
    2019-05-22 19:00:44 2019-05-22 19:01:00
    

    #系统时间天数取整

    SQL> select sysdate,round(sysdate,'dd') from dual;
    
    SYSDATE             ROUND(SYSDATE,'DD')
    ------------------- -------------------
    2019-05-22 19:01:36 2019-05-23 00:00:00
    

    trunc 日期截断

    #截取系统时间到天

    SQL> select sysdate,trunc(sysdate) from dual;
    
    SYSDATE             TRUNC(SYSDATE)
    ------------------- -------------------
    2019-05-22 19:03:28 2019-05-22 00:00:00
    

    #零点

      SQL> select sysdate,trunc(sysdate,'dd') from dual;
        
        SYSDATE             TRUNC(SYSDATE,'DD')
        ------------------- -------------------
        2019-05-22 19:04:16 2019-05-22 00:00:00
    

    #本月的第一天

    SQL> select sysdate,trunc(sysdate,'mm') from dual;
    
    SYSDATE             TRUNC(SYSDATE,'MM')
    ------------------- -------------------
    2019-05-22 19:04:57 2019-05-01 00:00:00
    

    #今年的第一天

    SQL> select sysdate,trunc(sysdate,'yyyy') from dual;
    
    SYSDATE             TRUNC(SYSDATE,'YYYY
    ------------------- -------------------
    2019-05-22 19:05:34 2019-01-01 00:00:00
    
    展开全文
  • 本章节内容如题. 话不多说直接上图 现要将oralce中图1结果集,转成图2所示结果集 ...多行多列转单行单列,别想着一口气完成,分步慢慢来 第一步:将多列转成单列----------使用 || '-' || sql:...
  • 子查询: 子查询简单来理解就是用查询的结果在内存中构建一个数据表,而我们可以使用普通sql语句来操控这...返回的这个名称即在内存中构建了一个单行单列的数据的表,‘ENAME’是名称,'BLACK'是单行单列的值,我们可
  • 1 有时需要在动态sql语句中拼接语句,需要行列转换动态化,需要生成横排的栏位. 示例如下。 declare @sql varchar(400) DECLARE @T1 TABLE(ID INT,SIZE_VALUE VARCHAR(10),SIZENAME VARCHAR(10) ) insert into @T1...
  • Oracle实现的思路是:对这两个字段group by分组,多列则按条件查询,用到decode函数 实现SQL如下: select t.container_code,t.bill_code, min(decode(status, 10, create_time)) as 成功时间1, min(decode...
  •  -- 多行多列连接成为单行单列示例:需要一个自定义函数  -- http://community.csdn.net/Expert/TopicView3.asp?id=5603231  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo]....
  • 多列合并成一列 concat_ws可选择分割符 test_score_fold_ = test_score_unfold . withColumn ( "score_concat" , concat_ws ( ',' , test_score_unfold [ '语文' ] , \ test_score_unfold [ '数学' ] , ...
  •  下文讲述通过sql脚本获取一个数据表中,多列数据中最小列值数据的方法  实验环境:sqlserver 2008 R2例:  当我们建立一张数据表存储三台设备生产一个同样工序所需的时间,  先我们需获取每次生产的最短时间 ...
  • 记录一个在oracle中多行转多列的函数,有一个项目近期到了收尾阶段,忽然客户说有一个成本分摊的统计表逻辑要调整,我一看需求瞬间头大了,其中比较麻烦的一段逻辑就是需要把单行多列数据分割成多行,百度了一下...
  • 可根据关键字符将一分成多行显示,例如 A B 1 1.1.2 拆分成 1 1 1 1 1 2 进行相关的显示
  • SQL语法-单行函数

    千次阅读 2016-07-26 22:07:13
    单行函数严格来讲并不属于SQL语法,但是针对不同的数据库,首先SQL这个标准一定会共同遵守的,但是每个数据库都有每一个数据库自己定义的函数,利用函数,可以完成一些指定的操作功能。那么在Oracle之中单行函数一共...
  • sql 单行和多行子查询

    2019-09-20 22:22:44
    单行和多行子查询 单行和多行子查询 --子查询(单行子查询,多行子查询) --查询比"CLARK"工资高的员工的信息? --[1]'CLARK'的工资是多少? SELECT SAL FROM EMP WHERE ENAME ='CLARK'; --2450 --[2...
  • 问题: 把相同的组织 日期,地区的条数据转换成一行数据 select r.org_id, r.month_id, r.area_id, SUM(case when r.data_item_id='D0302' then r.current_val end) current_vala, ...
  • 通过replace、cast把abc05成XML的形式KID字段(如上图示KID,row或者其他标签都行) 2.KID.nodes(‘row’) x(y) 对XML执行替换row标签的值返回为x(y)”“ 通过xml.nodes x(y) 方法能将xml转化为列表 x(y) 3....
  • sql运行到 plan_quantity 时报错:单行子查询返回个行 1、单独对每个语句块写sql语句查询,排查下来发现问题发生地方在 plan_quantity 上; 2、运行语句(Select To_Char(Pqb.Dispatch_Time_T,'yyyymmdd') Work_...
  • 行子查询(Row Subquery):返回单行结果(一行多列)的子查询,标量子查询是行子查询的一个特例。 表子查询(Table Subquery):返回一个虚拟表(多行多列)的子查询,行子查询是表子查询的一个特例。 2. 标量子...
  • Stu as select Name 姓名,Avg(语文) as 语文,avg(数学) as 数学, avg(物理) as 物理 from Stu pivot (avg(Score) for Course in (语文,数学,物理)) as T group by Name --转行 select * from V_Stu unpivot (Score...
  • string connectionStr = "Server = DESKTOP-IDK01B1\\SQLEXPRESS2014; DataBase = StudentManageDB; Uid = sa; Pwd =sa"; SqlConnection conn = new SqlConnection(connectionStr); conn.O...
  • 绝大多数数据库,在执行sql update语句时,update t set a = b, b=a 便可实现ab值互换,赋值表达式右侧的值取的都是原始值。mysql则是例外,其单表更新是自左到右依次完成,即先完成a=b,然后在完成b=a(此时a=b)...
  • SQLServer单行和多行注释

    千次阅读 2012-04-10 18:54:52
    环境:SQLServer 2008 R2 问题:不清楚SQLServer 里的注释用法。...-选择列表中的 'Student.sname' 无效,因为该没有包含在聚合函数或 GROUP BY 子句中。 SELECT Student.sno,sname,AVG(grade) A
  • 没错,确实可以用该方法处理单元格里面含有个值的情况;但是官方只给出了处理单列的示例!!!(我们可以回顾一下pandas的官方exploded的用法和相关示例操作????) 看到没,官方的解释是该方法可以复制索引值并...
  • Oracle入门到实战

    万次阅读 多人点赞 2019-11-09 11:12:07
    我们可以对多列创建索引,这种索引称为组合索引 索引测试: ---创建表 create table person( pid number(32) primary key, pname varchar2(16) not null, paddress varchar2(16) not null ); ---使用 PLSql 语法...
  • 链接:mysql 行列,多行一行,列转行,一行转多列 hive 启动hive时 ./hive -S (去除MR打印日志) hive命令行 set hive.exec.mode.local.auto=true; 设置本地模式 数据准备: create table student_score(s_id int,s_...
  • 表一对表二是一对的关系,现在需用表1去关联表2,但是要取表2的某条对应的最新的数据 表2格式为(同id查出条): select id,status from os.os_aen_erp_comments where recommendid =686871 1398221 加入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,930
精华内容 12,372
关键字:

sql单行转多列