国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

解析SQL Server 2005 溢用之:合并列值

2024-08-31 00:49:55
字體:
來源:轉載
供稿:網友

  很多人可能發現,無論是在sql 2000, 還是在 sql 2005 中,都沒有提供字符串的聚合函數, 所以, 當我們在處理下列要求時,會比較麻煩, 但在 sql server 2005中, 這種情況得到了改善, 我們可以輕松地完成這項處理。

問題描述:
無論是在sql 2000, 還是在 sql 2005 中,
都沒有提供字符串的聚合函數, 所以, 當
我們在處理下列要求時,會比較麻煩:
有表tb, 如下:
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 的和(字符串相加)

  1. 舊的解決方法

創建處理函數
create function dbo.f_str(@id int)
returns varchar(8000)
as
begin
  declare @r varchar(8000)
  set @r = ''
  select @r = @r + ',' + value
  from tb
  where [email protected]
  return stuff(@r, 1, 1, '')
end
go
-- 調用函數
select id, values=dbo.f_str(id)
from tb
group by id

  2. 新的解決方法

示例數據
declare @t table(id int, value varchar(10))
insert @t select 1, 'aa'
union all select 1, 'bb'
union all select 2, 'aaa'
union all select 2, 'bbb'
union all select 2, 'ccc'
-- 查詢處理
select *
from(
  select distinct
    id
  from @t
)a
outer apply(
  select
    [values]= stuff(replace(replace(
      (
        select value from @t n
        where id = a.id
        for xml auto
      ), '<n value="', ','), '"/>', ''), 1, 1, '')
)n/*--結果
id     values
----------- ----------------
1      aa,bb
2      aaa,bbb,ccc
(2 行受影響)
--*/

  注: 合并與分拆的clr, sql2005的示例中有:

  在安裝sql 2005的示例后,默認安裝目錄為 drive:program filesmicrosoft sql server90samplesengineprogrammabilityclrstringutilities中。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盖州市| 绥芬河市| 梓潼县| 凤冈县| 新营市| 运城市| 锦州市| 五原县| 丁青县| 铁岭市| 桂林市| 墨江| 绍兴市| 本溪| 尚义县| 车致| 台江县| 礼泉县| 连平县| 金溪县| 个旧市| 南充市| 浦江县| 海兴县| 宜川县| 长治县| 莱芜市| 云阳县| 禹城市| 蒲江县| 九寨沟县| 江城| 茌平县| 葫芦岛市| 花垣县| 南康市| 长治市| 兴山县| 出国| 酉阳| 水城县|