create table #t1
(a varchar(10),
b varchar(20)
)insert into #t1 values ('aa','1')
insert into #t1 values ('aa','9a')
insert into #t1 values ('bb','1')
insert into #t1 values ('bb','10')
insert into #t1 values ('bb','16')
insert into #t1 values ('aa','16')
insert into #t1 values ('aa','17')
insert into #t1 values ('aa','30')
insert into #t1 values ('bb','6df')
insert into #t1 values ('aa','5')
insert into #t1 values ('aa','8')
insert into #t1 values ('aa','ed')
所要的結果:
aa 1,9a,16,17,30,5,8,ed
bb 1,10,16,6df
解決方法:
declare @c varchar(1024)
set @c=''
declare @x char(10),@y char(10)
set @x=''
set @y=''
select @y=@x,@x=x.a,@c=@c + (case @x when @y then ',' else ';' + x.a + ':' end)
+x.d from (select b as d,a from #t1) as x order by x.a
set @c=substring(@c,2,len(@c)-1)
select @c
為什麼說是高效呢?
因為摒棄了游標和函式的途徑,而採用變數的方式來儲存值
也就是說避免了游標和函式自身的缺點
SQL 資料表給定欄位的多行記錄的合併
最近的報表中有個需求,使用者需要看到屬於某個客戶的order的所有的items,這些屬於某個order的items需要歸併為乙個字段記錄。首先是對兩個表的描述,乙個是orderhead,乙個是orderdetails,乙個客戶 debtor 有多個order,乙個order有乙個或多個item。or...
獲取MSSQL 表結構中字段的備註 主鍵等資訊
1 mssql2000 select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,標...
獲得sql表中對字段的描述文字
select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,標識 case when ...