前言以前接触过通用SQL中的行列转置,行转列使用聚合函数sum | max 然后结合case when then else end 语句就可以实现,而转行使用union或union all来实现。这样做其实有点麻烦,而在oracle数据中,专门提供了这样的函数来实现行列转置功能。通用SQL行列转置1、行转列先准备好数据表stu_score,表中数据如下: 现在想要实现以下的效果: 通用的SQL
转载 2023-08-02 10:46:46
354阅读
字符串拼接方法1 :concat 函数 : CONCAT(CHAR1,CHAR2)   特点:只能拼接两个字符串,也可以使用嵌套的方式拼接多个。嵌套方法:方法2 :|| 拼接 :   现有一张省级架构表,需要把字段归为 “100001 省公司” 的样式: || 拼接:相比concat函数使用更方便,可以在拼接字段之间添加想要的内容。listagg函
转载 2023-12-25 07:38:15
198阅读
表结构:1 A1 B1 C2 A2 B3 C3 F4 D转换后变成:1 A,B,C2 A,B3 C,F4 D答案假设你的表结构是tb_name(id, remark),则语句如下:SELECT a.id, wm_concat (a.remark) new_resultFROM tb_name agroup by a.id
it
转载 2011-10-29 18:13:00
569阅读
2评论
select Monthno 月份, SUM(thismonthacttotal) "总活跃用户数",
原创 7月前
40阅读
select XMLAGG(XMLELEMENT(表字段 || ',')).EXTRACT('//text()') .getclobval() from 表 ...
转载 2021-08-30 17:27:00
564阅读
2评论
1.新建一个名为TEST表2.向TEST表中添加数据INSERT INTO TEST(STUDENT,COURSE,SCORE)select '张三','语文',78 from dual unionselect '张三','数学',87 from dual union select '张三','英语',82 from dual unionselect '张三','物
转载 2022-06-16 06:50:39
383阅读
1. 前提固定行数 如:固定前10行等。IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FUN_GET_工程番号SQL]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[FUN_GET_工程番号SQL]
转载 2023-11-30 18:23:26
144阅读
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) NUL
转载 2021-08-03 15:50:50
468阅读
CREATETABLE[Test]([id][int]IDENTITY(1,1)NOTNULL,[name][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,[subject][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,[Source][numeric](18,0)NULL)ON[PRIMARY]GOINSERTINTO[test]([name],[subject],[Source])values(N'张三',N'语文',60)INSERTINTO[test]([name],[subject],[Source])va
转载 2007-03-21 23:18:00
158阅读
2评论
在做报表时,经常需要将数据表中的行转列,或者转行,如果不知道方法,你会觉得通过SQL语句来实现非常难。这里,我将使用pivot和unpivot来实现看似复杂的功能。 这个功能在sql2005及以上版本才有。 引用MSDN: 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一中的唯一值转换为输出中的多个来旋转表值表达式
转载 2023-09-04 07:28:28
253阅读
SQL Server转行SQL实现转行UNPIVOT SQL实现转行今天在做一个需求的时候遇到了这个转行,原因是需要存几个固定的数据,类似于学生成绩,学科是固定的,分数是不固定的,为了不影响之前已经做好的功能,于是直接就把这几个字段固定到主表了。后面都已经做完了但是临时被通知又要改了,原因就是别的模块在使用的时候希望学科和分数是存在2个字段里面,而不是每个都分开了,这就。。。。。。 但
一、行转列1、建表CREATE TABLE score( student_id VARCHAR(20) NOT NULL COMMENT '学生编号' DEFAULT '', student_name VARCHAR(50) NOT NULL COMMENT '学生姓名' DEFAULT '', gender VARCHAR(10) NOT NULL COMMENT '学生
转载 2024-04-23 12:32:58
1497阅读
我们在写Sql语句的时候没经常会遇到将查询结果行转列,转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法。但是这样做实现起来非常复杂,而在SqlServer2005中我们有了PIVOT/UNPIVOT函数可以快速实现行转列和转行的操作。 PIVOT函数,行转列 PIVOT函数的格式如下 PIVOT(<聚合函数>
  如题:有一张表EMP,里面有两个字段:name,chengji  有三条记录,分别表示语文(name) 70分,数学(name) 80分,英语(name) 58分,请用一条sql查询出这三条记录并以条件显示出来,大于等于80表示优秀,大于等于60表示及格,小于60分表示不及格!要求显示格式如上!首先我们创建表,添加如题数据!CREATE TABLE emp(NAM
第一:转行 (对某拆分,一拆多行)lateral view explode(split(column, ',')) num数据 2122 9,12 2123 12,15 2124 12,15 2125 1,12,15 建表 create table if not exists t_row_to_column_tmp( id string, tag string ) row form
转载 2023-06-25 17:02:11
765阅读
     在处理数据的时候,因为数据源在Excel文件中,本人Excel文件的处理方法不是太会,加上朋友说在Excel中处理这样的数据很麻烦,我就想着干脆导入到数据库中通过代码解决这个问题,感兴趣的可以找我拿数据源自己试试。自己也是为了避免忘记操作,所以记录下来。    数据格式大致如下(数据量有70w)标题是我自己加
SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。而在SQL面试中,一道出镜频率很高的题目就是行转列和转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。给定如下模拟数据集,这也是SQL领域经典的学生成绩表问题。两张期望的数据表分别如下:1)长表: 2)宽表:考察的问题就是通过SQL语句实
转载 2023-08-18 18:45:06
267阅读
1点赞
Oracle转行问题 Oracle中使用语句将行数据转换称不同的列表示,或者将不同的数据写到同一的不同行上的行列转换问题是一个非常传统的话题。 网络上流传了很多将行数据转换称数据的方法和应用实例,一般通过decode或者case函数与聚合函数联合实现功能,这里就不再重复。 日前本人在一个偶然的应用中用到了一个需要将数据转换为行数据的问题。搜索了很久没有发现很合适的方法。网络一般推
转载 2009-07-02 09:37:48
2793阅读
以下转自:http://dacoolbaby.iteye.com/blog/1698957  作者: dacoolbaby这是一个Oracle转行函数:LISTAGG()先看示例代码:Sql代码  withtempas(  select'China' nation ,'Guangzhou' city from dual unionallselect'China'
转载 精选 2014-04-24 23:02:11
3124阅读
本文来源于:dacoolbaby 的 这是一个Oracle转行函数:LISTAGG() 1 with temp as( 2 select 'China' nation ,'Guangzhou' city from dual union all 3 select 'China' nation ,'Shanghai' city from dual union all 4 s...
转载 2021-07-19 13:48:21
552阅读
  • 1
  • 2
  • 3
  • 4
  • 5