精华内容
下载资源
问答
  • SQL多行变一行的方法

    2016-11-09 09:19:12
    SQL方法,将一列中的多行变为一行,将按一定条件筛查出来的多行数据变为一行数据
  • sql 多行合并某一列字符串拼接的示例语句
  • SQL 多行转成一列

    千次阅读 2018-07-02 10:23:06
    CREATE TABLE [dbo].[a]([id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[value] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]GO--创建表...
    CREATE TABLE [dbo].[a]
    
    (
    [id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
    [name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
    [value] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO
    --创建表




    INSERT INTO dbo.a
            ( id, name, value )
    VALUES  ( N'1', -- id - nchar(10)
              N'张三', -- name - nchar(10)
              N'1'  -- value - nchar(10)
              ),
              ( N'2', -- id - nchar(10)
              N'张三', -- name - nchar(10)
              N'2'  -- value - nchar(10)
              ),
              ( N'3', -- id - nchar(10)
              N'李四 ', -- name - nchar(10)
              N'1'  -- value - nchar(10)
              ),
              ( N'4', -- id - nchar(10)
              N'李四', -- name - nchar(10)
              N'2'  -- value - nchar(10)
              ),
              ( N'5', -- id - nchar(10)
              N'王五', -- name - nchar(10)
              N'1'  -- value - nchar(10)
              ),
              ( N'6', -- id - nchar(10)
              N'王五', -- name - nchar(10)
              N'2'  -- value - nchar(10)
              )
              --插入例子数据
              
              
              
    SELECT * FROM  a 
    --查询表


    SELECT rTRIM(a.value)+','   FROM a  FOR XML PATH('') 

    --把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值的拼接






    SELECT name,LEFT(valuenew,LEN(valuenew)-1)as valuenew,LEN(LEFT(valuenew,LEN(valuenew)-1)) as valuenewlen,LEN(a.valuenew)AS 原长度 FROM (
    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 )  a
    --left方法保留字符串的长度减一的字符串
    --或
    SELECT name,STUFF(a.valuenew,LEN(a.valuenew),1,'') as valuenew ,LEN(STUFF(a.valuenew,LEN(a.valuenew),1,'')) as valuenewlen,LEN(a.valuenew)AS 原长度 FROM (
    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)  a 
    --stuff方法把字符串最后一位开始,第一字符删除,插入空

    --去除拼接的最后一个字符逗号























    展开全文
  • select top 3concat(userId,’/’) from UserProfile for xml path(’’)

    select top 3concat(userId,’/’) from UserProfile for xml path(’’)

    展开全文
  • sql 多行数据一行显示

    2011-05-15 12:00:21
    多行数据一行显示多行数据一行显示多行数据一行显示多行数据一行显示
  • 一行变多行,行转列 一行原数据: orderid clientname 123 linda,lily,bob 345 apple,july,cici 一行拆成多行: -- LATERAL VIEW explode 要放置于from之后,where之前 select distinct orderid,clientname ...

    一行变多行,行转列

    一行原数据:

    orderid   clientname
    123		  linda,lily,bob
    345       apple,july,cici
    

    一行拆成多行:

    -- LATERAL VIEW explode 要放置于from之后,where之前
    
    select distinct orderid,clientname
                from table
                LATERAL VIEW explode (split(clientname,',')) t -- t为新表别名
                where d ='${zdt.format("yyyy-MM-dd")}' 
    

    拆成后:

    orderid   clientname
    123		  linda
    123       lily
    123       bob
    345       apple
    345       july
    345       cici
    

    再变回一行:

    -- collect_set() 去重;collect_list() 不去重
    
    select orderid,collect_set(clientname) clitentname
    from t
    group by orderid
    

    聚合后:

    orderid   clientname
    123       ["linda","lily","bob"]
    345       ["apple","july","cici"]
    

    注意:此时多行聚合成一行后,clientname只是数组,要变成原始版本string格式,使用concat_ws()增加逗号

    select orderid,concat_ws(',',collect_set(clientname)) clitentname
    from t
    group by orderid
    

    最终还原为一行原数据

    orderid   clientname
    123		  linda,lily,bob
    345       apple,july,cici
    
    展开全文
  • Oracle SQL多行转一行

    2019-11-07 14:33:52
    Oracle SQL listagg函数多行转一行 oracle查询多行数据合并成一行数据 原始查询出来的结果是这样的: 想要实现结果是这样的,示例: 废话不多说直接上干货! select listagg(user_name,’,’) WITHIN GROUP(ORDER ...

    Oracle SQL listagg函数多行转一行

    oracle查询多行数据合并成一行数据

    原始查询出来的结果是这样的:
    在这里插入图片描述
    想要实现结果是这样的,示例:
    在这里插入图片描述
    废话不多说直接上干货!
    select listagg(user_name,’,’) WITHIN GROUP(ORDER BY user_name) user_name from USER_INFO where deleted_flag = 0…

    想进一步改进实现另一种方式,如下图:


    可以SQL拼接
    select listagg(user_name,’,’||’’’’) WITHIN GROUP(ORDER BY user_name) user_name from USER_INFO where …随意写了

    链接: link.

    Alt

    展开全文
  • SQL多行查询结果拼接

    千次阅读 2019-01-29 16:04:26
    1.Orcal to_char(wmsys.wm_concat(to_char( st.col_name))) as new_name to_char: 将当前值转换成字符串类型; wmsys.wm_concat:拼接函数 案例: SELECT t.*, b.name ... SELECT t.fid, to_char(wms...
  • Oracle SQL多行子查询

    2019-04-07 12:30:24
    开发工具与关键技术:Oracle sql*plus PLSQL Developer 作者:杨春桃 撰写时间:2019年03月26日 多行子查询: 操作符 含义 In 等于列表中的任意一个 Any 和子查询返回的某一个值比较...
  • SQL多行转一行(一列转多列)

    千次阅读 2019-07-26 09:58:58
    执行如下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 ...
  • 要实现的SQL查询很原始: 要求从第一个表进行查询得到第二个表格式的数据,上网查询之后竟然能写出下面的SQL: 代码如下: select * from userino SELECT * FROM( SELECT DISTINCT userpart FROM userino )A OUTER ...
  • sql多行转列

    2011-12-22 13:57:09
    主要是关于sqlserver的多行转列的问题,这是我经过个人测试的语句。
  • PHP SQL 多行书写规范

    2017-06-27 17:00:23
    $sql = "SELECT g.goods_id, g.goods_name, g.yjiage, g.ejiage, gom.url " . "FROM ecs_link_goods AS lg " . "LEFT JOIN ecs_goods_new as g ON g.goods_id = lg.link_goods_id " . "LEFT JOIN ecs_goods...
  • 有时候会遇到这种情况,数据库查询返回多行记录,且每行记录由另外符合条件的多条记录内容合并,遇到这种情况,我们可以选择下面两种方式
  • 原始数据: ...sql: SELECT card.OPERLINEID,listagg(card.VEHICLENO,',') within group (order by card.OPERLINEID) vehicles FROM dlysjhsj.SD_PUBLIC_L1_LINECARD card GROUP BY card.OP...
  • sql 多行、一行 互转(逗号分割)

    千次阅读 2020-08-03 15:47:53
    原始数据: 期望数据: IF OBJECT_ID('temp_20170701','u') IS NOT NULL DROP TABLE temp_20170701 ... CREATE TABLE temp_20170701 ( ID INT PRIMARY KEY IDENTITY(1,1), ...INSERT dbo.temp_20170701( Name, s.....
  • sql多行转一行字符串

    千次阅读 2017-12-26 17:09:59
    方法1: DECLARE @STR VARCHAR(8000) SELECT @STR = ISNULL(@STR+',','')+CAST(MenuID AS NVARCHAR) FROM (SELECT TOP 3 MenuID FROM basemenu)AS T SELECT @STR AS NAME 方法2: SELECT STUFF( ...
  • sql 多行以 ','号隔开

    2019-10-10 16:12:00
    SELECT group_concat(id separator ',') FROM a ;
  • SQL多行分录合并一行

    2019-08-27 10:13:53
    SQL多行分录合并一行 select t1.finterid ,min(t1.fentryid) fentryid, fname =(stuff( (select ' '+fname from (select t.FinterID finterid, fname=(stuff( (select ' '+fname from t_SubMessage where ...
  • sql多行拼接成字符串

    千次阅读 2014-05-15 10:59:21
    DECLARE @productnamestr varchar(MAX) SET @productnamestr = '' SELECT @productnamestr = @productnamestr + ',' + productname_en FROM Product_default WHERE CompanyInfo_id = @companyinfo_id
  • SQL 多行拼成一行 (3种解决方案)

    万次阅读 2014-11-27 23:56:27
    SQL 多行拼成一行 (3种解决方案) 原数据: (5 行受影响) UserID RoleName RoleID ----------- ---------- -------- 2014000 developer 1 2014000 product 2 2014001 devel
  • Max 用法 正常用法: select offid,max(time2) from 表 A group by offid B 经常遇到,表名:tmp.testtable 想变成: select a.* from tmp.testtable a ...(select usercode,max(time2)maxtime from tmp.testtable ...
  • SELECT STUFF( (SELECT ','+CONVERT(VARCHAR,id) FROM t_article_class WHERE classpath LIKE '%,2,%' FOR XML PATH('')) ... (可选操作)您可以通过在 SQL 查询中指定 FOR XML 子句,从而将该查询...
  • sql多行合并

    千次阅读 2019-04-15 17:59:00
    sqlserver可以用,其他未试) SELECT qqo.questionID '题目id', qqo.quesOption '选项' FROM qz_question_option qqo, qz_question qq WHERE qqo.questionID = qq.questionID 上面多行记录合并为...
  • 多行转多列,废话不多说,开始正文:首先,参考了:http://www.cnblogs.com/kingthy/archive/2008/04/29/1175697.html(这个人写的例子很好,很简单,我就是参考他的,然后改的自己的,如果你们的数据库表模式和他的...
  • sql实现多行合并一行

    2014-09-26 09:10:05
    可以实现多行查询数据转换到一行上显示,多行的某列信息用“,”号隔开。
  • SQL多行数据插入

    2013-09-28 20:19:14
    Insert into 表名(列表) values(列表值),  (列表值),  (列表值);
  • 多行转多列:  要实现该功能pivot行数应该是必不可少吧,下面我就来说说该函数如何使用  局限性:该函数只能针对已知行数要转为几列才能使用,动态行转动态列不支持(个人所知,如可以实现请指教) 用法:pivot( x...
  • 今天遇到一个需求 需要计算每个订单工序错误... 2.sql多行合并为一行  3.以,分割字符串  4.保留两位小数   首先我分组统计出了一个订单对应的数量,这个比较简单。 我要得到订单对应错误代码 failcode ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 99,084
精华内容 39,633
关键字:

sql多行