日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)

發布時間:2023/12/18 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在CSDN社區 MS-SQLSERVER板塊,關于行轉列的問題,層出不窮,之前dawugui,roy_88等高手都多次整理過,我就不再整理了,只是給出一個示例,以供大家參考。


槑黨是CSDN水源2012年新出現的,這里對2012年1-8月的相關數據,簡單的統計一下。


數據采集于下面地址:

http://forum.csdn.net/PointForum/Forum/ExpertTopList.aspx?flg=bigMonth&forumid=d5ce81ef-7dab-4abb-a7ca-ac03342ae03b&bigclassid=d5ce81ef-7dab-4abb-a7ca-ac03342ae03b&smallclassid=9231e8e0-b9bc-4c51-b364-ba68665814cc&date=2012-6&year=2012&month=6

統計只是在擴充話題板塊TOP100名單中出現的用戶,以昵稱中出現槑黨字樣的為樣本。

數據顯示槑黨在2012年1-8月期間,TOP100中有的相關數據共得216951分。

行轉列后的統計結果為:



數據腳本我已經上傳到了下載頻道,有感興趣的朋友,可以去免費下載。

地址:?相關數據腳本下載地址(含創建表的腳本和插入數據的腳本,無需積分) ?


行轉列代碼如下:

[sql]?view plaincopyprint?
  • --SQL?SERVER?2005+?靜態行轉列示例??
  • select???
  • ????row_number()?over?(order?by???
  • ????????(select?sum(score)?from?dduser???
  • ???????????????????????????where?username=b.username)?desc)???as?總排名,??
  • ????(select?sum(score)?from?dduser?where?username=b.username)?as?總得分,??
  • ????userDisplay?as?昵稱,??
  • ????username?as?賬號,??
  • ????max(isnull('第'+ltrim([1])+'名',''))?as?[1月],??
  • ????max(isnull('第'+ltrim([2])+'名',''))?as?[2月],??
  • ????max(isnull('第'+ltrim([3])+'名',''))?as?[3月],??
  • ????max(isnull('第'+ltrim([4])+'名',''))?as?[4月],??
  • ????max(isnull('第'+ltrim([5])+'名',''))?as?[5月],??
  • ????max(isnull('第'+ltrim([6])+'名',''))?as?[6月],??
  • ????max(isnull('第'+ltrim([7])+'名',''))?as?[7月],??
  • ????max(isnull('第'+ltrim([8])+'名',''))?as?[8月]??
  • from???
  • (select?*?from?dduser)?a???
  • pivot?(max(rank)?for?[month]?in?([1],[2],[3],[4],[5],[6],[7],[8]))?b??
  • group?by?username,userDisplay?order?by?總得分?desc??
  • ??
  • ??
  • --SQL?SERVER?2005+?動態行轉列示例??
  • declare?@sql?varchar(max),@colname?varchar(max)??
  • select?@sql?=?isnull(@sql?+?'],['?,?'')?+?ltrim([month])?from?dduser?group?by?[month]??
  • set?@sql?=?'['?+?@sql?+?']'??
  • select?@colname=??
  • ????????isnull(@colname+',','')+'max(isnull(''第''+ltrim(['??
  • ????????+ltrim([month])+'])+''名'',''''))?as?['+ltrim([month])+'月]'??
  • from?dduser?group?by?[month]??
  • exec?(??
  • 'select???
  • ????row_number()?over?(order?by???
  • ????????(select?sum(score)?from?dduser???
  • ???????????????????????????where?username=b.username)?desc)???as?總排名,??
  • ????(select?sum(score)?from?dduser?where?username=b.username)?as?總得分,??
  • ????userDisplay?as?昵稱,??
  • ????username?as?賬號,??
  • ????'+@colname+'??
  • from?(select?*?from?dduser)?a???
  • pivot?(max(rank)?for?[month]?in?('+@sql+'))?b??
  • group?by?username,userDisplay?order?by?總得分?desc')??
  • ??
  • --擴展:如果時間要擴展的話,把month字段改個名字,存儲YYYY-MM格式即可存儲多個年限的了。??
  • 總結

    以上是生活随笔為你收集整理的【SQL SERVER 2005+版本行转列示例】(2012年1-8月水源槑党25强榜单新鲜出炉)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。