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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

動態(tài)SQL語句在SQLServer中非固定行的轉(zhuǎn)列應(yīng)用

2019-11-18 18:15:15
字體:
供稿:網(wǎng)友

社區(qū)里有人提問一個(gè)行轉(zhuǎn)列的應(yīng)用,在SQLServer中都是用Case的,我隨便答了一下,由于是非固定行,有網(wǎng)友給我發(fā)消息問怎么實(shí)現(xiàn),詳細(xì)來說一下。

相關(guān)聯(lián)接
http://community.csdn.net/Expert/topic/3417/3417326.xml?temp=.8530084

Answer:

F1      F2
jack    book1
jack    book2
jack    book3
mary    book4
mary    book5
...

轉(zhuǎn)化為
F1    F2    F3    F4    F5
jack       book1     book2     book3
mary      book4     book5
billy       book6     book7

--------------------------------------------

測試過程:
--------------------------------------------


create table Test
(F1 char(10),
 F2 char(10))

--測試表

insert into Test
select 'jack' F1,'book1' F2
union
select 'jack' F1,'book2' F2
union
select 'jack' F1,'book3' F2
union
select 'Mary' F1,'book4' F2
union
select 'Mary' F1,'book5' F2
union
select 'Mike' F1,'book1' F2
union
select 'Mike' F1,'book5' F2
union
select 'Mike' F1,'book7' F2
union
select 'Mike' F1,'book9' F2

--插入數(shù)據(jù)

select id=identity(int,0,1),f1,f2 into #t from test



select a.f1,a.f2,a.id,cc ,N=
 case when (id>cc) then cast(id-cc-minn+1 as Char(10))
      when (id<=cc) then cast(id+1 as Char(10))
 end
into #Temp
from #t a,
(select f1,cc,minn  from
  (select  f1,count(*)as cc,min(id)-count(*) as minn from #t group by f1) t)b
where a.f1=b.f1


--構(gòu)造兩個(gè)臨時(shí)表,由于要用到行號,所以必須要第一個(gè)臨時(shí)表,第二個(gè)可以不用

select * from #Temp

--這個(gè)表筆原來的多一個(gè)字段,每個(gè)人的第n條記錄

DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT f1  姓名'
SELECT @SQL= @SQL+ ',MIN(CASE WHEN N = ''' + N + ''' THEN F2 END) [F' + N + ']' FROM (SELECT DISTINCT N FROM #Temp) A
SET @SQL=@SQL+' FROM #Temp GROUP BY F1'
EXEC (@SQL)
 
--一條動態(tài)SQL語句

drop table #t
drop table #Temp
drop table Test


/*
jack       book1      1        
jack       book2      2        
jack       book3      3        
Mary       book4      1        
Mary       book5      2        
Mike       book1      1        
Mike       book5      2        
Mike       book7      3        
Mike       book9      4        
--------Temp表數(shù)據(jù)*/

/*
jack       book1      book2      book3      NULL
Mary       book4      book5      NULL NULL
Mike       book1      book5      book7      book9    

--------最終結(jié)果*/


 


上一篇:來自SVG的靈感

下一篇:入手自制軟件背單詞

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 祁阳县| 凤台县| 宁明县| 林西县| 策勒县| 大悟县| 潼关县| 罗源县| 忻州市| 安阳市| 攀枝花市| 新竹县| 和林格尔县| 宜昌市| 安康市| 辽中县| 皮山县| 民权县| 西平县| 疏勒县| 白山市| 大化| 阿图什市| 长葛市| 祁连县| 莒南县| 石泉县| 牙克石市| 阜南县| 平果县| 新邵县| 鲜城| 家居| 吴忠市| 开封县| 阿拉尔市| 安远县| 罗定市| 西充县| 宽城| 吉木萨尔县|