精华内容
下载资源
问答
  • 2021-05-08 03:36:15

    10g列改行函数wmsys.wm_concat:

    -- 列改行

    SQL> select replace(wmsys.wm_concat(table_name),',','*') from all_tables where rownum<=5;

    REPLACE(WMSYS.WM_CONCAT(TABLE_

    --------------------------------------------------------------------------------

    ICOL$*IND$*COL$*CLU$*TAB$

    11g中可用listagg,比10g的强大多了。

    select listagg(id) within group(order by id) from t;

    -- 换行

    SQL> select 'abc'||chr(13)||'def'||chr(13)||'ghi' from dual;

    'ABC'||CHR(13)||'DEF'||CHR(13)

    ------------------------------

    abc

    def

    ghi

    -- 显示小数整数为0时

    SQL> select to_char(.0129,'fm9999990.9999') from dual;

    TO_CHAR(.0129,'FM9999990.9999'

    ------------------------------

    0.0129

    不过需注意的是:listagg返回的是varchar型,而wmsys.wm_concat返回的是clob数据类型。

    -- The End --

    更多相关内容
  • SQL列转行显示方法

    2017-08-23 09:06:06
    SQL通过一个存储过程将一数据转换成几列数据,本人亲测,效果很好
  • SQL 列转行

    千次阅读 2021-03-05 16:10:44
    SQL 列转行函数 Oracle: listagg() **listagg(字段名,’‘分隔符’) within group(order by 字段名) ** with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' nation...

    SQL 列转行函数

    Oracle:

    listagg()

    **listagg(字段名,’‘分隔符’) within group(order by 字段名) **

    with temp as(  
      select 'China' nation ,'Guangzhou' city from dual union all  
      select 'China' nation ,'Shanghai' city from dual union all  
      select 'China' nation ,'Beijing' city from dual union all  
      select 'USA' nation ,'New York' city from dual union all  
      select 'USA' nation ,'Bostom' city from dual union all  
      select 'Japan' nation ,'Tokyo' city from dual   
    )  
    select nation,listagg(city,',') within GROUP (order by city)  cities
    from temp  
    group by nation
    
    
    
    

    执行结果

    NATIONCITIES
    ChinaBeijing,Guangzhou,Shanghai
    JapanTokyo
    USABostom,New York

    wm_concat()

    使用wm_concat能达到同样的效果:

    select nation,wm_concat(city) from temp group by nation
    

    MySQL:

    下表为 节点表:

    id parent_id name

    1 0 根节点
    2 1 一级节点
    3 1 一级节点
    4 1 一级节点
    5 3 二级节点
    6 2 二级节点
    7 4 二级节点
    8 5 三级节点
    9 5 三级节点
    10 5 三级节点
    11 6 三级节点
    12 11 四级节点
    13 10 四级节点

    使用group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

    select t.name, GROUP_CONCAT(t.id ORDER BY t.`name` SEPARATOR ',') ids from tree t GROUP BY t.name
    
    

    查询结果:

    nameids
    一级节点4,3,2
    三级节点11,10,9,8
    二级节点7,6,5
    四级节点13,12
    根节点1





    展开全文
  • sql列转行

    2021-03-10 06:53:37
    go --用于:交叉表的数是不确定的 declare @sql varchar(8000) set @sql = 'select id,' select @sql = @sql + '(case subject when '''+subject+''' then source else null end) as '''+...

    CREATE TABLE [Test] ([id] [int] IDENTITY (1, 1) NO

    CREATE TABLE [Test] (

    [id] [int] IDENTITY (1, 1) NOT NULL ,

    [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

    [subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

    [Source] [numeric](18, 0) NULL

    ) ON [PRIMARY]

    GO

    INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'语文',60)

    INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'数学',70)

    INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'英语',80)

    INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'数学',75)

    INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'语文',57)

    INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'语文',80)

    INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'英语',100)

    Go

    --交叉表语句的实现:

    --用于:交叉表的列数是确定的

    select name,sum(case subject when '数学' then source else 0 end) as '数学',

    sum(case subject when '英语' then source else 0 end) as '英语',

    sum(case subject when '语文' then source else 0 end) as '语文'

    from test

    group by name

    --用于:交叉表的列数是不确定的

    declare @sql varchar(8000)

    set @sql = 'select name,'

    select @sql = @sql + 'sum(case subject when '''+subject+'''

    then source else 0 end) as '''+subject+''','

    from (select distinct subject from test) as a

    select @sql = left(@sql,len(@sql)-1) + ' from test group by name'

    exec(@sql)

    go

    --用于:交叉表的列数是不确定的

    declare @sql varchar(8000)

    set @sql = 'select id,'

    select @sql = @sql + '(case subject when '''+subject+'''

    then source else null end) as '''+subject+''','

    from (select distinct subject from test) as a

    select @sql = left(@sql,len(@sql)-1) + ' from test '

    exec(@sql)

    go

    本文由来源 21aspnet,由 system_mush 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

    展开全文
  • oracle sql 列转行

    2022-05-09 18:17:11
    数据sql: select '123' meter_id,'2022-05-05' data_date,'1' phase_...列转行sql: SELECT meter_id, data_date, phase_flag, cur_val1 cur_val FROM ( SELECT '123' meter_id, '2022-05-05' data_date, '1'

    数据准备sql代码

    select '123' meter_id,'2022-05-05' data_date,'1' phase_flag,'55' cur_val1,'66' cur_val2,'77' cur_val3 from dual
    

    数据格式

    在这里插入图片描述

    列转行sql代码

    SELECT
    	meter_id,
    	data_date,
    	phase_flag,
    	cur_val1 cur_val 
    FROM
    	( SELECT '123' meter_id, '2022-05-05' data_date, '1' phase_flag, '55' cur_val1, '66' cur_val2, '77' cur_val3 FROM dual ) UNION ALL
    SELECT
    	meter_id,
    	data_date,
    	phase_flag,
    	cur_val2 cur_val 
    FROM
    	( SELECT '123' meter_id, '2022-05-05' data_date, '1' phase_flag, '55' cur_val1, '66' cur_val2, '77' cur_val3 FROM dual ) UNION ALL
    SELECT
    	meter_id,
    	data_date,
    	phase_flag,
    	cur_val3 cur_val 
    FROM
    	( SELECT '123' meter_id, '2022-05-05' data_date, '1' phase_flag, '55' cur_val1, '66' cur_val2, '77' cur_val3 FROM dual )
    

    列转行后数据格式

    在这里插入图片描述

    展开全文
  • 主要给大家介绍了关于SQL行转列、列转行的简单实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • SqlServer列转行的另一种方式!
  • 主要给大家介绍了关于SQL知识点之列转行Unpivot函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 题: ...列转行 CASE expr1 WHEN expr2 THEN expr3 ELSE expr4 END 行中字段expr1是expr2取expr3否则取expr4 根据题意 CASE month WHEN 'jan' THEN revenue ELSE null END 当字段month是‘jan’
  • 2.列转行后的数据 SELECT tt.订单号, tt.物料代码, tt.物料名称, tt.物料规格, tt.订单数量, tt.生产计划, tt.TODAY, tt.开始时间 INTO #OrderPlanPrint1 FROM #OrderPlanPrint UNPIVOT ( T...
  • sql 列转行

    2013-08-09 16:42:05
    sql列转行用法实例,动静态脚本.适合新手学习
  • sql列转行(字段)逗号分割

    万次阅读 2020-07-06 10:12:33
    LISTAGG(列名,<分隔符>) WITHIN GROUP(ORDER BY 列名)函数 SELECT D.id,LISTAGG(E.keyword,',') WITHIN GROUP(ORDER BY E.keyword) AS keyword FROM STOCK_LIVE D LEFT JOIN STOCK_KEYWORD E ON D.id = E....
  • PostGre Sql 列转行

    千次阅读 2020-02-25 12:06:06
    1 测试表数据 SELECT role_no FROM pmpdb.tb_userrole_info; role ------ ...2 列转行写法 写法1:(string_agg) SELECT user_no, string_agg (role_no, ',') asrole_no FROM pmpdb.tb_userrole_in...
  • SQL列转行及行转列

    2021-01-13 20:32:24
    --============================================== 作者:王运亮(wwwwgou) 时间:2011-06-10 博客:http://blog.csdn.net/wwwwgou --==============================================--1.行转 IF OBJECT_ID('...
  • mssql 数据库表行转列,列转行终极方案,需要的朋友可以参考下。
  • Sql 列转行字符串

    2017-06-07 11:24:00
    select OrderID,ProdDetailID from A 表A : OrderID,ProdDetailID 1 6 1 7 1 9 2 5 2 3 如:orderID=1 的列转行select STUFF((SELECT ','+ c...
  • SQL 列转行如何实现?

    2015-02-09 01:00:59
    !...我的语句是:select ISNULL(fritemcd,tofritemcd)as fritemcd, qty,qty2 from (SELECT a.fritemcd,a.qty FROM iniop03t a left join biitm01t b on fritemcd=itemcd WHERE a.movedt='20150204' AND a.frstockcd ...
  • --行转 固定xml语法 declare @xml xml ; set @xml=cast('<v>2</v><v>4</v><v>3</v><v></v>' as xml); select tab.val.value('.'/*xpath 语法*/,'nvarchar(10....
  • SQL Server列转行

    千次阅读 2021-12-17 14:30:26
    SQL Server列转行SQL实现列转行UNPIVOT SQL实现列转行 今天在做一个需求的时候遇到了这个列转行,原因是需要存几个固定列的数据,类似于学生成绩,学科是固定的,分数是不固定的,为了不影响之前已经做好的功能,...
  • hive sql列转行

    2021-04-09 10:54:26
    hive sql列转行 SELECT * FROM table UNPIVOT ( score FOR subject IN (“语文”,“数学”,“英语”) )

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,502
精华内容 3,800
关键字:

sql列转行