您的位置:68399皇家赌场 > 虚拟主机 > 拼串sql怎么样写

拼串sql怎么样写

发布时间:2019-07-28 18:32编辑:虚拟主机浏览(100)


    集结列值 --******************************************************************************************* 表结构,数据如下: id value ----- ------ 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需求获得结果: id values ------ ----------- 1 aa,bb 2 aaa,bbb,ccc 即:group by id, 求 value 的谷青阳和(字符串相加)

    /* 4 */
    declare @s nvarchar(4000)
    select  @s=isnull(@s ',','') quotename([时间]) from (select DATEPART(hh, CreateTime) 时间,count(*) 总量 from Business_Login 
    WHERE  CreateTime > ( select CONVERT(varchar, getdate(), 111 ))
    GROUP BY  DATEPART(hh, CreateTime)) t group by[时间] ORDER BY 时间
    exec('select * from (select DATEPART(hh, CreateTime) 时间,count(*) 总量 from Business_Login 
    WHERE  CreateTime > ( select CONVERT(varchar, getdate(), 111 ))
    GROUP BY  DATEPART(hh, CreateTime)  
     )t pivot (max([总量]) for [时间] in(' @s '))b')

     1 --分拆列值 
     2 --原著:邹建 
     3 --改编:爱新觉罗.毓华(公斤年风霜,守得冰山雪水旦开) 二零零六-12-16 新疆柏林
     4 
     5 --有表tb, 如下: 
     6 --id value 
     7 ------------- ----------- 
     8 --1 aa,bb 
     9 --2 aaa,bbb,ccc 
    10 --欲按id,分拆value列, 分拆后结果如下: 
    11 --id value 
    12 ------------- -------- 
    13 --1 aa 
    14 --1 bb 
    15 --2 aaa 
    16 --2 bbb 
    17 --2 ccc 
    18 
    19 --1. 旧的缓和办法(sql server 三千) 
    20 SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b
    21 
    22 SELECT A.id, SUBSTRING(A.[values], B.id, CHARINDEX(',', A.[values]   ',', B.id) - B.id) 
    23 FROM tb A, # B 
    24 WHERE SUBSTRING(','   A.[values], B.id, 1) = ','
    25 
    26 DROP TABLE #
    27 
    28 --2. 新的解决格局(sql server 2006) 
    29 create table tb(id int,value varchar(30)) 
    30 insert into tb values(1,'aa,bb') 
    31 insert into tb values(2,'aaa,bbb,ccc') 
    32 go 
    33 SELECT A.id, B.value 
    34 FROM( 
    35 SELECT id, [value] = CONVERT(xml,' <root> <v>'   REPLACE([value], ',', ' </v> <v>')   ' </v> </root>') FROM tb 
    36 )A 
    37 OUTER APPLY( 
    38 SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v) 
    39 )B
    40 
    41 DROP TABLE tb
    42 
    43 /* 
    44 id value 
    45 ----------- ------------------------------ 
    46 1 aa 
    47 1 bb 
    48 2 aaa 
    49 2 bbb 
    50 2 ccc
    51 
    52 (5 行受影响)
    53 */

    1 aa
    1 bb
    2 aaa
    2 bbb
    2 ccc

    SQL code


    1 aa,bb
    2 aaa,bbb,ccc
    欲按id,分拆value列, 分拆后结果如下:
    id value

    1. 旧的消除措施(在sql server 3000中只好用函数消除。) --============================================================================= create table tb(id int, value varchar(10)) insert into tb values(1, 'aa') insert into tb values(1, 'bb') insert into tb values(2, 'aaa') insert into tb values(2, 'bbb') insert into tb values(2, 'ccc') go --1. 创立处理函数 CREATE FUNCTION dbo.f_strUnite(@id int) RETURNS varchar(8000) AS BEGIN DECLARE @str varchar(8000) SET @str = '' SELECT @str = @str ','

    /*
    hour    cnt
    9    187
    10    369
    11    340
    12    56
    13    374
    14    381
    15    307
    澳门皇家赌场55533网址,16    410
    17    516
    18    73
    */


    • value FROM tb WHERE id=@id RETU讴歌RDXN STUFF(@str, 1, 1, '') END GO -- 调用函数 SELECt id, value = dbo.f_strUnite(id) FROM tb GROUP BY id drop table tb drop function dbo.f_strUnite go /* id value ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc (所影响的行数为 2 行) */ --=================================================================================== 2. 新绿业Computer高校的缓慢解决措施(在sql server 2007中用OUTE瑞虎 APPLY等化解。) create table tb(id int, value varchar(10)) insert into tb values(1, 'aa') insert into tb values(1, 'bb') insert into tb values(2, 'aaa') insert into tb values(2, 'bbb') insert into tb values(2, 'ccc') go -- 查询处理SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY( SELECT [values]= STUFF(REPLACE(REPLACE( ( SELECT value FROM tb N WHERE id = A.id FOR XML AUTO ), ' <N value="', ','), '"/>', ''), 1, 1, '') )N drop table tb /* id values ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc (2 行受影响) */ --SQL2006中的方法2 create table tb(id int, value varchar(10)) insert into tb values(1, 'aa') insert into tb values(1, 'bb') insert into tb values(2, 'aaa') insert into tb values(2, 'bbb') insert into tb values(2, 'ccc') go select id, [values]=stuff((select ',' [value] from tb t where id=tb.id for xml path('')), 1, 1, '') from tb group by id /* id values ----------- -------------------- 1 aa,bb 2 aaa,bbb,ccc (2 row(s) affected) */ drop table tb /* 标题:分拆列值1 作者:爱新觉罗.毓华(市斤年风霜,守得宿将传说冰山雪中国莲开) 时间:贰零零玖-11-20 地方:安徽布里斯班 描述 有表tb, 如下: id value ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc 欲按id,分拆value列, 分拆后结果如下: id value ----------- -------- 1 aa 1 bb 2 aaa 2 bbb 2 ccc */ --1. 旧的化解措施(sql server 三千) SELECT TOP 7000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b SELECT A.id, value = SUBSTRING(A.[value], B.id, CHARINDEX(',', A.[value]
    • ',', B.id)
    • B.id) FROM tb A, # B WHERE SUBSTRING(','
    • A.[value], B.id, 1) = ',' DROP TABLE # --2. 新永生的消除格局(sql server 二零零五) create table tb(id int,value varchar(30)) insert into tb values(1,'aa,bb') insert into tb values(2,'aaa,bbb,ccc') go SELECT A.id, B.value FROM( SELECT id, [value] = CONVERT(xml,'<root><v>'
    • REPLACE([value], ',', '</v><v>')
    • '</v></root>') FROM tb )A OUTER APPLY( SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v) )B DROP TABLE tb /* id value ----------- ------------------------------ 1 aa 1 bb 2 aaa 2 bbb 2 ccc (5 行受影响) */

     --按0,1,2...
    SELECT DATEPART(hh, CreateTime) [hour],
           COUNT(*) cnt
    FROM   Business_Login
    WHERE  CreateTime > ( select CONVERT(varchar, getdate(), 111 ))
    GROUP BY
           DATEPART(hh, CreateTime)
    ORDER BY [hour] 

    有表tb, 如下:
    id value

    )t ORDER BY 时间

    本文由68399皇家赌场发布于虚拟主机,转载请注明出处:拼串sql怎么样写

    关键词: 68399皇家赌场 Sql Server 大火兔 SEO sql 行列 转换