精华内容
下载资源
问答
  • SQL将一行多列数据合并成 一列

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

    由于最近在做项目的时候,要对数据库中一行很多列个数据进行求和,便在网上查了一下,首先要用到动态SQL语句,动态sql感觉就是类似于拼接sql字符串

    动态语句基本语法
    1 :普通SQL语句可以用exec执行
    Select * from tableName
    exec('select * from tableName')
    exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N

    2:字段名,表名,数据库名之类作为变量时,必须用动态SQL

    declare @fname nvarchar(20)
    set @fname = 'FiledName'
    Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
    exec('select ' + @fname + ' from tableName') --
    请注意 加号前后的 单引号的边上加空格
    如果设置字符串变量,应该把它设置成 nvarchar, 但是我在SQL SERVER2014上面用varchar照样也可以
    接下来就是具体的执行代码
    select 列1+列2+...+列30 from table
    declare @sql nvarchar(1000)
    set @sql=''
    select @sql=@sql+'+isnull('+name+',0)'--inull(paras1,paras2)函数用来判断是否为空,如果为空用paras2替换
    from syscolumns 
    where id=object_id('表名') and xtype=56  --56表示整型 
    set @sql=stuff(@sql,1,1,'')--用于将第一加号替换掉,这一句代码不可以少否则会出现错误
    print ('select '+@sql+' from 表名')
    exec ('select '+@sql+' from 表名')
    例如如上面的一张表格我要对其进行求和:
    use test
    go
    declare @sql varchar(1000)
    set @sql=''
    select @sql=@sql+'+isnull('+name+',0)'
    from syscolumns
    where id=object_id('tb1') and xtype=56--对应整型
    set @sql=stuff(@sql,1,1,'')
    print ('select '+@sql+' from tb1')

    exec ('select '+@sql+' from tb1')
    上面就是求得的结果,因为我把id和id1这两列设成了整型和浮点型所只计算了第一列
    如果只想求一行的和可以在select 语句里加上TOP 函数,就可以了
    如果我们想把执行动态SQL 的结果赋值给另一变量的话,就需要执行存储过程了,在执行下面的存储过程的时候如果是字符串类型的话应该都设置为nvarchar 这样可以避免出错
    EXEC sp_executesql

       @stmt= <statement>,--类似存储过程主体

    @params
    = <params>, --类似存储过程参数部分,声明参数类型

    <params assignment> --类似存储过程调用,为参数赋值,参数值要和参数顺序要一一对应,也可以通过为参数指明参数值的方式为其赋值
    附上我写的代码:
    declare @sum int,@sql nvarchar(1000),@num int,@sql1 nvarchar(100)
    set @sql=''
    select @sql=@sql+'+isnull('+name+',0)'
    from syscolumns
    where id=object_id('tb1') and xtype=56
    set @sql=stuff(@sql,1,1,'')


    --print ('select '+@sql+' from 表名')
    set @sql1=   'select @sum=(select top(1) id from tb1)'
    set @sql1='select @sum=(select top 1 '+@sql+' id from tb1)'
    exec sp_executesql @sql1,N'@sum int output',@num output
    select @num


    PS: syscolumns是sqlserver中的一个系统表,用来记录sqlserver中字段信息的。也就是在数据库里所有表格里 的字段的信息
    但是创建的临时表里的字段的信息并没有存储在这个系统表里


    xtype    类型
    34 image
    35 text
    36 uniqueidentifier
    48 tinyint
    52 smallint
    56 int
    58 smalldatetime
    59 real
    60 money
    61 datetime
    62 float
    98 sql_variant
    99 ntext
    104 bit
    106 decimal
    108 numeric
    122 smallmoney
    127 bigint
    165 varbinary
    167 varchar
    173 binary
    175 char
    189 timestamp
    231 sysname
    231 nvarchar
    239 nchar

    展开全文
  • excel 多列内容合并个单元格

    万次阅读 2015-09-08 16:12:34
    问题说明:如下图,有一列数据,需要将此数据合并条记录,并使用逗号来分隔。   解决方法: 1.新建,在第个单元格输入逗号,如左图所示,鼠标放在第个单元格的右下角,显示实心黑色十字时,向下...

    问题说明:如下图,有一列数据,需要将此列数据合并为一条记录,并使用逗号来分隔。


           

    解决方法:

    1.新建一个列,在第一个单元格输入逗号,如左图所示,鼠标放在第一个单元格的右下角,显示实心黑色十字时,向下拖动,即可复制 数据,复制后入右图所示。

                                         

    2.点击一个单元格,并在单元格内输入   =phonetic(A1:b18)  点击回车,完成。即得到了合并后的一条记录,复制单元格即可复制到这条记录。(A1和B18可通过点击相应单元格的形式获得,无需手动输入)。







    展开全文
  • 我的个人理解:mysql 行变列(多行变成一行/多行合并一行/多行合并多列/合并行),我觉得这都是一个意思 数据库结构如图: 而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现: ...

    我的个人理解:mysql 行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行),我觉得这都是一个意思

    数据库结构如图:


    而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现:

    第一种展现如图----【多行变一列】(合并后的数据在同一列上):


    sql如下:

    select name ,group_concat(sore Separator ';') as score from stu group by name 
    第二种展现如图----【多行变多列】(合并后的数据在不同列上):

    sql如下:

    SELECT name ,
    MAX(CASE type WHEN '数学' THEN score ELSE 0 END ) math,
    MAX(CASE type WHEN '英语' THEN score ELSE 0 END ) English ,
    MAX(CASE type WHEN '语文' THEN score ELSE 0 END ) Chinese 
    FROM stu  
    GROUP BY name
    -----------------------------------------------------------------------------------------------------可爱的分割线----------------------------------------------------------------------------------------------------

    当然,在第一种情况中(显示在一列),也有些其他的类似形式:

    形式一:

    sql如下:

    select name ,group_concat(type,'分数为:',score  Separator '; ') as score from stu group by name 

    呵呵,当然 如果你很熟悉group_concat和concat的用法,你也做出如下形式:

    其sql如下:

    select name ,concat(name ,'的分数为[',group_concat(type,'分数为:',score  Separator '; '),']') as score from stu group by name 


    展开全文
  • 一、一列多行数据合并 ...二、一行多列合并 跟一列多行合并为一个单元格类似 2.1 在D1单元格输入=A1:C1 2.2 然后按F9键 2.3 最后删除{}和"",全量替换即可,根据需要将";“替换为”,"或其他字符。 ...

    一、一列多行数据合并

    1.1 在B1单元格输入=A1:A6
    在这里插入图片描述
    1.2 然后按F9键
    在这里插入图片描述
    1.3 最后删除{}和"",全量替换即可,根据需要将";“替换为”,"或其他字符。
    在这里插入图片描述

    二、一行多列合并

    跟一列多行合并为一个单元格类似

    2.1 在D1单元格输入=A1:C1
    在这里插入图片描述
    2.2 然后按F9键
    在这里插入图片描述
    2.3 最后删除{}和"",全量替换即可,根据需要将";“替换为”,"或其他字符。
    在这里插入图片描述

    展开全文
  • MySQL多列合并一列,多行合并一行

    千次阅读 2019-01-02 19:33:30
    原本的sql语句: SELECT creater_user_id,file_name FROM t_report WHERE ...两行合并一行(中间用 '_' 连接),sql如下: SELECT CONCAT(creater_user_id,'_',file_name) FROM t_report WH...
  • 文章出处:mysql多行多列合并一行一列 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ ...
  • excel多列多行合并多列一行

    千次阅读 2019-05-24 11:29:47
    步:J2单元格输入公式:=INDEX(B:B,MAX(($A2:2:2:A7=7=7=I2)*(B$2:B$7<>"")*ROW(B$2:B$7))) 第二步:shift+Ctrl+enter(重要的补,单按enter键,出不来结果) 第三步:下拉,右拉 ...
  • Oracle合并多列到一行wm_concat

    千次阅读 2015-12-23 20:12:49
    Oracle合并多列到一行wm_concat   Oracle在group by后合并表的某一列,以逗号隔开  或者合并整个表中的一列 www.2cto.com   函数为wm_concat    用法如下:  把表中一列合并一行  select wm_concat...
  • ![图片说明](https://img-ask.csdn.net/upload/202001/02/1577945994_526606.png) 主要是这两个数据一样的情况下
  • 最近需要利用Shell将多行多列文本中某一列,通过指定的分隔符合并成一行。假设需要处理的文本如下: 我们主要处理的是,将用户名提取处理,合并一行,并通过逗号进行分隔。最终的格式如下: “li1”,”huan”,...
  • 第二中展示(显示在同一行的同一上) sql如下: select name , max(decode(type,'math',score,0)) ||';'|| max(decode(type,'english',score,0)) ||';'|| max(decode(type,'chinese',score,0)) as ...
  • MySql 将查询结果多列合并一行GROUP_CONCAT GROUP_CONCAT(expr) 该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下所示: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER ...
  • pyspark列合并一行

    千次阅读 2020-05-28 14:19:18
    pyspark列合并一行 将dataframe利用pyspark列合并一行,类似于sql的GROUP_CONCAT函数。例如如下dataframe: +----+---+ | s| d| +----+---+ |abcd|123| | asd|123| +----+---+ 需要按照列相同的列d将s合并,...
  • mysql多行多列合并一行一列

    万次阅读 2012-06-19 18:15:56
    ,把name字段的值打印在一行, 逗号分隔 (默认) mysql> select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+--------------------+ |1 ...
  • 将一个值合并一行并用逗号分割 效果 sql语法: mysql写法: --默认的逗号分隔 select GROUP_CONCAT(A.title) as citys from tmpcity A; --用空格分隔 select GROUP_CONCAT(A.title SEPARATOR ...
  • Excel按某列或多列合并行

    千次阅读 2017-09-22 10:32:52
    如果以某列或者几列为基准,只要这列或多列的数据相同就合并这些的数据,不管这些的其他列的数据是否相同。例如下图: 比如按登录名和地区两列合并行。希望最终要得到的结果如下: (注,无需比对的...
  • SQL/Oracle 将一多行合并一行

    万次阅读 2015-01-10 09:28:52
    1.SQL 参照:http://www.cnblogs.com/smalleyes/archive/2012/03/08/2385658.html 方法:用户自定义函数 CREATE FUNCTION FN_Merge (@Student NVARCHAR(50)) RETURNS NVARCHAR(50) AS BEGIN DECLARE @C
  • 工作中遇到个需求,前端传入参数peopleid(s),根据这个(些)参数去hive中查询旅馆,需要返回个success字段,代表这些参数中查询有结果的个数。问题在于如何确定哪个peopleid在哪个旅馆住过? 、问题分析: ...
  • 大家平时在查询数据的时候,肯定会遇到需要将一个值变成一行; 第一种情况:显示在同一行的同一上 1、新建一个表test 可以参考:https://blog.csdn.net/heqiang525/article/details/90210326 里面的建表...
  • SQL查询 多列合并一行用逗号隔开

    万次阅读 2018-11-21 18:07:35
    SQL查询
  • 在Excel 里你同样可以运用自定义函数将中的单元格合并到一个单元格中,并以空格或特殊符号分隔合并内容。 在键盘上按住 Alt 键并点击 F11 键打开Microsoft...
  • MYSQL多列数据合并成1

    千次阅读 2017-01-14 09:36:12
    需求3:表1中type=1的name字段合并为1,同时去掉重复值 SQL: select group_concat(distinct name) from table1 where type=1 拓展: 表1(table1) id name ...
  • oralce写法:select WM_CONCAT(A.title) as citys from tmpcity A sql server写法:select stuff((select ','+A.title from tmpCity A FOR xml PATH('')), 1, 1, '') as citys MySQL写法:select GROUP_CONCAT(A....
  • 关键设定: cmTemplate: {  resizable:false,  sortable: false }, gridComplete: function() { var $grid = $("#ID");...// 第一列的宽度 = 三宽度总和 var newWidth = $("#kijituMeisaiGrid_startTimeH").w
  • awk按第一列key相同,合并多行;并对情况进行统计
  • 1.以id分组,把name字段的值打印在一行,逗号分隔(默认) mysql> select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+-----------------...
  • SQLite3 一多行合并为一列一行

    千次阅读 2016-04-01 14:16:26
    A B  ----------  1 中  1 人  2 三 2 天 2 李 变成: A B ------------------- 1 中,人 2 三,天,李 ...--GROUP_CONCAT()函数用来合并列的内容 SELECT A,GROUP_CONC

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 246,831
精华内容 98,732
关键字:

多列的内容合并到一行