-
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:06SQL通过一个存储过程将一列数据转换成几列数据,本人亲测,效果很好 -
SQL 列转行
2021-03-05 16:10:44SQL 列转行函数 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
执行结果
NATION CITIES China Beijing,Guangzhou,Shanghai Japan Tokyo USA Bostom,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
查询结果:
name ids 一级节点 4,3,2 三级节点 11,10,9,8 二级节点 7,6,5 四级节点 13,12 根节点 1
-
sql列转行
2021-03-10 06:53:37go --用于:交叉表的列数是不确定的 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行转列、列转行的简单实现
2020-09-09 03:51:30主要给大家介绍了关于SQL行转列、列转行的简单实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 -
SqlServer列转行的另一种方式
2020-02-19 16:07:02SqlServer列转行的另一种方式! -
SQL知识点之列转行Unpivot函数
2020-09-09 01:42:43主要给大家介绍了关于SQL知识点之列转行Unpivot函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 -
sql列转行,行转列,可实操
2021-09-29 10:56:05题: ...列转行 CASE expr1 WHEN expr2 THEN expr3 ELSE expr4 END 行中字段expr1是expr2取expr3否则取expr4 根据题意 CASE month WHEN 'jan' THEN revenue ELSE null END 当字段month是‘jan’ -
SQL 列转行和动态用时间生数据列
2022-03-29 16:55:202.列转行后的数据 SELECT tt.订单号, tt.物料代码, tt.物料名称, tt.物料规格, tt.订单数量, tt.生产计划, tt.TODAY, tt.开始时间 INTO #OrderPlanPrint1 FROM #OrderPlanPrint UNPIVOT ( T... -
sql 列转行
2013-08-09 16:42:05sql列转行用法实例,动静态脚本.适合新手学习 -
sql列转行(字段)逗号分割
2020-07-06 10:12:33LISTAGG(列名,<分隔符>) 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:061 测试表数据 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 数据库表行转列,列转行终极方案
2020-09-11 06:41:13mssql 数据库表行转列,列转行终极方案,需要的朋友可以参考下。 -
Sql 列转行字符串
2017-06-07 11:24:00select 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语法 SQL 列转行
2017-12-15 11:08:00--行转列 固定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:26SQL Server列转行SQL实现列转行UNPIVOT SQL实现列转行 今天在做一个需求的时候遇到了这个列转行,原因是需要存几个固定列的数据,类似于学生成绩,学科是固定的,分数是不固定的,为了不影响之前已经做好的功能,... -
hive sql列转行
2021-04-09 10:54:26hive sql列转行 SELECT * FROM table UNPIVOT ( score FOR subject IN (“语文”,“数学”,“英语”) )