精华内容
下载资源
问答
  • SQL多行转一行(一列转多列

    千次阅读 2019-07-26 09:58:58
    现在我想将type去掉,将apply_id相同的oss_key分为五类既五,也就是说apply_id变为唯一值,type类型去掉,加上类型1,类型2,类型3,类型4,类型5五数据。每条数据对应个apply_id。 执行如下SQL ...

    我有一个表,结构如下所示:
    apply_id bigint COMMENT ,
    oss_key string COMMENT ‘存储在oss上的路径’,
    type string COMMENT ‘类型,10-一类数据,20-二类数据,30-三类数据,40-四类数据,50-补充数据’,

    查询出来之后是这样的数据

    SELECT  apply_id
            ,type
            ,oss_key
    FROM    ods_t_apply_auth
    ;
    

    在这里插入图片描述
    现在我想将type列去掉,将apply_id相同的oss_key分为五类既五列,也就是说apply_id变为唯一值,type类型列去掉,加上类型1,类型2,类型3,类型4,类型5五列数据。每一条数据对应一个apply_id。

    执行如下SQL

    SELECT  apply_id
            ,MAX( CASE WHEN type=10 THEN oss_key END) AS oss_key1
            ,MAX( CASE WHEN type=20 THEN oss_key END) AS oss_key2
            ,MAX( CASE WHEN type=30 THEN oss_key END) AS oss_key3
            ,MAX( CASE WHEN type=40 THEN oss_key END) AS oss_key4
            ,MAX( CASE WHEN type=50 THEN oss_key END) AS oss_key5
    FROM    ods_t_apply_auth
    GROUP BY apply_id
    ;
    

    在这里插入图片描述
    即可完成完美转换

    展开全文
  • 这是同学要实现的效果,主要是一行转多行的效果,且转换前不知道有多少唯一行值该转为 下面直接贴代码,仅供大家参考,如果有疑问请联系我qq,2625526306,有偿代写sql,原创,转载需备注,谢谢 if object_id('...

    今天有个同学要做行转列的问题,把实现过程记录一下
    首先把同学要实现的原表晒出来,大家看下

    在这里插入图片描述这是同学要实现的效果,主要是一行转多行的效果,且转换前不知道有多少唯一行值该转为列在这里插入图片描述
    下面直接贴代码,仅供大家参考,如果有疑问请联系我qq,2625526306,有偿代写sql,原创,转载需备注,谢谢

    1. 知识点,pivot的用法,语法如下
    2. SELECT ,
      [first pivoted column] AS ,
      [second pivoted column] AS ,

      [last pivoted column] AS
      FROM
      (<查询表或者子查询作为数据源>)
      AS 表别名
      PIVOT
      (
      <聚合函数>(<被聚合的列>)
      FOR
      [<待转换的列名称,此列的多个唯一值将被转换为列标题>]
      IN ( [first pivoted column], [second pivoted column],
      … [last pivoted column])
      ) AS <旋转表的别名>
      <可选的排序子句 order by >;
      可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。 PIVOT 轮换表值表达式,具体方法是将表达式某一列中的唯一值转换为输出中的多个列,并在必要时对最终输出中所需的其余任何列值运行聚合。 与 PIVOT 执行的操作相反,UNPIVOT 将表值表达式的列轮换为列值。
    if object_id('tempdb..#test')  is not null
    drop table #test
    create table #test
    ( 事项名称 varchar(200),
      年月 varchar(7),
      受理数量 int ,
      办结数量 int
    )
    
    insert into #test 
    select '注销','2019-01',77,77
    union all 
    select '注销','2019-02',66,77
    union all 
    select '延续','2019-03',16,16
    union all 
    select '注销','2019-04',16,16
    union all 
    select '延续','2019-04',120,115
     --select *from  #test
      declare  @event varchar(3000)='',@sql varchar(3000)='',@queryexp varchar(3000)=''
       if object_id('tempdb..#hbTab') is not null
         drop table #hbtab
      select   事项名称,(年月+'_受理') as [year],受理数量,年月 into #hbtab  from #test
       --列转行
      insert into #hbtab
      select  事项名称,(年月+'_办结') as [year],办结数量,年月 from #test
      --获取行的属性
      --select *from #hbtab
      select @event=@event+',['+[year]+']'  from (select distinct [year] from #hbtab) a order by [year]
      select @queryexp=@queryexp+',max(['+[year]+']) as '+'['+[year]+']'  from (select distinct [year] from #hbtab) a order by [year]
    select  @queryexp=right(@queryexp,len(@queryexp)-1)
    select  @event=right(@event,len(@event)-1)
    
    --select *from #hbtab order by year
    set @sql='select 事项名称,'+@queryexp+' from( select 事项名称,'+@event +'from #hbtab a  
    pivot (max(受理数量) for year in('+@event+') 
    ) as pv ) b group by 事项名称'
    print @sql
     exec(@sql)
    
    
    
    
    展开全文
  • sqlserver 多行转多列实例

    千次阅读 2019-10-13 14:39:08
    查询结果字段介绍:c_ex49是业务员id,tmonth是年-月,tamt是对应月的金额,想要最后查询的效果是:把每个业务员的每个月的金额显示成一行,我这里只到了1-10月份,不过显示还是要显示1-12月的,没有的就显示0 ...

    查询结果字段介绍:c_ex49是业务员id,tmonth是年-月,tamt是对应月的金额,想要最后查询的效果是:把每个业务员的每个月的金额显示成一行,我这里只到了1-10月份,不过显示还是要显示1-12月的,没有的就显示0

    上图使用多行转多列,效果为:

     

    下面是具体步骤:

     

    然后,执行上面的逻辑后,就由最初的多行变成了多列

    最初的:

    select c_ex49,CONVERT(VarChar(7),c_starttime, 120) as tmonth,SUM(CAST(c_ex9 as float)) as tamt from CRM_CONTRACT 
           where CONVERT(VarChar(7),c_starttime, 120)>='2019-01' and CONVERT(VarChar(7),c_starttime, 120)<='2019-12' and c_ex49='scrmsass_yangli'
    group by c_ex49,CONVERT(VarChar(7),c_starttime, 120)

     

    执行后的:

    select c_ex49,
        sum(oneMonth) as oneMonth,sum(twoMonth) as twoMonth,sum(threeMonth) as threeMonth,sum(fourMonth) as fourMonth,sum(fiveMonth) as fiveMonth,sum(sixMonth) as sixMonth,
        sum(sevenMonth) as sevenMonth,sum(eightMonth) as eightMonth,sum(nineMonth) as nineMonth,sum(tenMonth) as tenMonth,sum(elevenMonth) as elevenMonth,sum(telvMonth) as telvMonth from (
        select c_ex49,
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-01' then c_ex9 else '0.0' end as float)) 'oneMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-02' then c_ex9 else '0.0' end as float)) 'twoMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-03' then c_ex9 else '0.0' end as float)) 'threeMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-04' then c_ex9 else '0.0' end as float)) 'fourMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-05' then c_ex9 else '0.0' end as float)) 'fiveMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-06' then c_ex9 else '0.0' end as float)) 'sixMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-07' then c_ex9 else '0.0' end as float)) 'sevenMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-08' then c_ex9 else '0.0' end as float)) 'eightMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-09' then c_ex9 else '0.0' end as float)) 'nineMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-10' then c_ex9 else '0.0' end as float)) 'tenMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-11' then c_ex9 else '0.0' end as float)) 'elevenMonth',
        sum(CAST(case when CONVERT(VarChar(7),c_starttime, 120)='2019-12' then c_ex9 else '0.0' end as float)) 'telvMonth'
        from CRM_CONTRACT where CONVERT(VarChar(7),c_starttime, 120)>='2019-01' and CONVERT(VarChar(7),c_starttime, 120)<='2019-12' and c_ex49='scrmsass_yangli'
        group by c_ex49,CONVERT(VarChar(7),c_starttime, 120)  
    ) t1 group by c_ex49


     

     

     

     

    展开全文
  • Hive SQL转化成N多列

    千次阅读 2018-06-16 16:53:37
    select explode(Array('row1','row2','...','rown'))Result col_name row1row2...rown


    select  explode(Array('row1','row2','...','rown'))

    Result

    col_name

    row1

    row2

    ...

    rown





    展开全文
  • https://blog.csdn.net/wyqwilliam/article/details/82559023 https://blog.csdn.net/qq_39774060/article/details/80618094 https://www.cnblogs.com/LiZhongZhongY/p/10930440.html
  • 需求:提取数据 说明:原数据是一列多行,需要转化为一行多列 待查询表为:temp_05 hive> desc temp_05; OK data_dt string zhanghao string booking_time_final string sign string hname
  • 实现由多行转化为多列显示,适合初级学者参考学习
  • 怎么能够成以下数据结构: A 人事 20 30 40 10 50 60 B 研发 100 200 300 400 500 600 望大神赐教! 最好是有代码. 十分感谢 不怎么上这个网站,仅有的C币,全部给了。
  • 多行转多列,废话不多说,开始正文:首先,参考了:http://www.cnblogs.com/kingthy/archive/2008/04/29/1175697.html(这个人写的例子很好,很简单,我就是参考他的,然后改的自己的,如果你们的数据库表模式和他的...
  • 5,C#后台代码,先将一转换成一行,以逗号隔开,【】包裹 string SQL = "SELECT LEFT(a.Name,LEN(a.Name)-1) AS Name FROM (SELECT STUFF((SELECT '[' + name + '],' FROM(SELECT name FROM dbo.base_pay_...
  • SQL Server 行转列转行。多行成一

    万次阅读 多人点赞 2018-06-08 09:16:58
    、多行成一(并以","隔开)表名:A表数据:想要的查询结果:查询语句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A WHERE name = Test.name ...
  • SQL批量行转列已经个字段拼接

    千次阅读 2017-04-24 08:30:21
    第二步:运行一下SQL,就可以得出以下拼接(合并)效果。关键点是where jobId=V_WIP_Balance.jobId 。你想要第个显示什么,这个ID就要在视图中查出来,不然会数据有误,而且查询速度非常慢。 select  S_Customer....
  • 在许多的互联网项目当中,报表开发是整个项目当中很重要的个功能模块。其中会有一些比较复杂的报表统计需要行转列或者转行的需求。今天给大家简单介绍一下在SQLServer当中如何使用PIV...
  • hive 行转列/转行 多行转一行/一行转多行 Mysql 创建表语句: CREATE TABLE student_score( id BIGINT PRIMARY key auto_increment, s_name VARCHAR(20) , s_sub VARCHAR(20), s_score INT ); insert into student_...
  • 多行转多列:  要实现该功能pivot行数应该是必不可少吧,下面我就来说说该函数如何使用  局限性:该函数只能针对已知行数要转为几列才能使用,动态行转动态列不支持(个人所知,如可以实现请指教) 用法:pivot( x...
  • MySQL 重温SQL——行转列转行

    万次阅读 2019-04-11 15:10:23
    行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比系列复杂的SELECT…CASE 语句中所指定的...
  • SQL一行多列数据合并成 一列

    万次阅读 2016-08-19 12:39:33
    由于最近在做项目的时候,要对数据库中一行多列个数据进行求和,便在网上查了一下,首先要用到动态SQL语句,动态sql感觉就是类似于拼接sql字符串 动态语句基本语法 1 :普通SQL语句可以用exec执行 Select * ...
  • Spark DataFrame 多行转多列

    千次阅读 2018-10-24 07:13:15
    在Spark DataFrame中可以用Pivot函数将多行多列。 样本数据 每个用户对每部电影的评分。 数据格式:userID 用户ID,movieID 电影ID,rating评分 15,399,2 15,1401,5 15,1608,4 15,20,4 18,100,3 18,1401,3 18,399...
  • 各位网络大神,最近遇到个问题,在我数据库中取出的数据只是这样显示的: !... 现在我们想将上图那种取出的数据...单条专列我会处理,但是行转列不知如何处理,望各位大神指点。 如问题解决也可以发20私包感谢。
  • 多行字符串 这个比较简单,用||或concat函数可以实现 ? 1 ... select concat(id,username) str from ... 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr、instr、regexp_substr函数方式 ...
  • 项目开发中有这样的需求,原始数据如下: +--------+-----------+ ...根据指定的标识符进行切分,然后一行转多行,以新进行展示: val result= df.withColumn("newMessage",functions.explode(fun
  • SQL 行转列 转行 case when 写法

    千次阅读 2020-04-10 10:48:38
    关于mysql 对 行转列转行的sql 编写,只用case when的写法 现有组数据如下,该组数据网上随便找的,具体参考业务需求 利用SQL达到如下效果 实现语句 select name,max(case when subject=‘chinese’ then ...
  • SQL行转列

    万次阅读 2018-09-04 08:44:15
    阅读目录  :前言  二:第次思考  三:第二次思考  四:第三次思考  :前言 ... 可以看得出来,表2是由表1的数据转化而来的,只有Name是表1中的,一步一步的来,其他的难搞,如...
  • Hive经典SQL行转列转行

    千次阅读 多人点赞 2020-10-30 16:17:07
    前言:目前做离线数据计算,由于之前没有完整的数仓功能,前两天把CDH的配置和自己的代码又调试了遍,目前数据已经进入到Hive原始数据ods层。...2. 行转列用法 -- 这里我们将学科和成绩两列都拼接起来,后边.
  • .本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法:使用拼接SQL,静态... 扩展阅读:参数化表名、分组行转列字段、字段值; 扩展阅读...
  • 前言刚开始工作就成了被温水煮的青蛙的话,那该有难吃啊。所以要保持冷静的头脑,好好思考...问题描述sql server 数据库里有两张表,主表和明细表;最终需要在前端页面显示表格,要求是以主表为基础的、将明细表的数
  • ![图片说明](https://img-ask.csdn.net/upload/202001/02/1577945994_526606.png) 主要是这两个数据一样的情况下
  • SQL 多行成一

    千次阅读 2018-07-02 10:23:06
    --把value拼接起来,隔开 SELECT b.name, (SELECT rTRIM(value)+',' FROM a WHERE name=b.name FOR XML PATH('')) AS valuenew FROM dbo.a AS b GROUP BY name --按照name分组,计算当前name的value值的拼接 ...
  • Sql(presto语法) 实现行转列转行

    千次阅读 2019-12-19 10:56:31
    这里的行列转换都是在presto...Sql语句:数据行转列(表a-to-表b)和 转行(表b-to-表a) 1.行转列(sql语句) selectcountry, SUM(CASEWHENcnt_cut= ‘(0,20]‘THENcntELSE0END)ASone, SUM(CASEWHENcnt_cut=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 392,708
精华内容 157,083
关键字:

sql一行转多列