最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MS SQL Server STUFF實現(xiàn)統(tǒng)計記錄行轉(zhuǎn)為列顯示

 更新時間:2024年04月09日 09:24:16   作者:?初九之潛龍勿用  
SQL語句行轉(zhuǎn)列函數(shù)是一種用于將多個行數(shù)據(jù)轉(zhuǎn)換為一列的函數(shù),本文主要介紹了MS SQL Server STUFF實現(xiàn)統(tǒng)計記錄行轉(zhuǎn)為列顯示,具有一定的參考價值,感興趣的可以了解一下

范例運行環(huán)境

操作系統(tǒng): Windows Server 2019 DataCenter

數(shù)據(jù)庫:Microsoft SQL Server 2016

視圖樣本設(shè)計

假設(shè)某一視圖 [v_pj_rep1_lname_score] 可查詢對某一被評價人的績效指標(biāo)的打分情況,并按評價人的職務(wù)進(jìn)行分類, 設(shè)計如下:

序號字段名類型說明備注
1projectciduniqueidentifier項目ID
2wxmpciduniqueidentifier被評價人ID
3count_sortidtinyint評價人職級排序號數(shù)值越小職務(wù)越高
4lnamenvarchar評價人職務(wù)
5rsint評價人總數(shù)
6scoredecimal評價人總分所有評價人給被評價人打分的總和
7score2decimal評價人平均得分所有評價人給被評價人打分的總和除以總?cè)藬?shù)的平均分

查詢分析器結(jié)果數(shù)據(jù)顯示如下圖:

/****** SSMS 的 SelectTopNRows 命令的腳本  ******/
SELECT  [projectcid]
      ,[wxmpcid]
      ,[count_sortid]
      ,[lname]
      ,[rs]
      ,[score]
      ,[score2]
  FROM [v_pj_rep1_lname_score] order by projectcid,wxmpcid,count_sortid

如圖我們對項目ID、被評價人ID、評價人職務(wù)排序號進(jìn)行排序,可以看到職務(wù)越高排位越靠前。

數(shù)據(jù)統(tǒng)計要求

假設(shè)統(tǒng)計視圖名 [v_pj_rep1_lname_score_count] 可查詢對某一被評價人的所有被評價人統(tǒng)計描述(如人員人數(shù)情況、每類人打分情況等),即將視圖設(shè)計樣本的行數(shù)據(jù)變?yōu)榱羞M(jìn)行顯示, 統(tǒng)計表設(shè)計如下:

序號字段名類型說明備注
1projectciduniqueidentifier項目ID
2wxmpciduniqueidentifier被評價人ID
3scoredecimal被評價人權(quán)重分1總?cè)藬?shù)的平均分*20%
4score2decimal被評價人權(quán)重分2總?cè)藬?shù)的平均分*20%*30%
5dnamenvarchar統(tǒng)計顯示將行數(shù)據(jù)變?yōu)榱袛?shù)據(jù),顯示統(tǒng)計詳情信息

查詢分析器結(jié)果數(shù)據(jù)顯示如下圖:

如圖第一行數(shù)據(jù) dname 列返回 “董事長88.21分,總經(jīng)理100.00分,分協(xié)管領(lǐng)導(dǎo)92.23分,其他領(lǐng)導(dǎo)91.79分,部門職工(2人,總分187.65分)93.83分” ,該列會顯示各職務(wù)打分的人數(shù),總分及平均分情況,從統(tǒng)計結(jié)果來看,更加直觀。 

 STUFF函數(shù)實現(xiàn)

 示例代碼如下:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE view [dbo].[v_pj_rep1_lname_score_count] as 

select projectcid,wxmpcid,round(sum(score2)*0.2,2) score,round(sum(score2)*0.2*0.3,2) score2,
STUFF(( select ','+b.lname+case when rs>1 then '('+cast(rs as varchar(20))+'人,總分'++REPLACE(cast(round(score,2) as nvarchar(20)),'0000','')+'分'+')' else '' end+REPLACE(cast(round(score2,2) as nvarchar(20)),'0000','')+'分'   
from v_pj_rep1_lname_score b 
where b.projectCid=a.projectcid and b.wxmpCid=a.wxmpCid order by count_sortid for xml path('')
),1,1,'') as dname from 
 
  v_pj_rep1_lname_score a group by projectcid,wxmpcid
GO

關(guān)鍵說明見下表: 

序號關(guān)鍵語句說明
1round(sum(score2)*0.2,2) score, round(sum(score2)*0.2*0.3,2) score2,取權(quán)重值,并使用ROUND函數(shù)取后兩位小數(shù)
2

STUFF((

select ','+b.lname+case when rs>1 then '('+cast(rs as varchar(20))+'人,總分'++REPLACE(cast(round(score,2) as nvarchar(20)),'0000','')+'分'+')' else '' end+REPLACE(cast(round(score2,2) as nvarchar(20)),'0000','')+'分'   
from v_pj_rep1_lname_score b 
where b.projectCid=a.projectcid and b.wxmpCid=a.wxmpCid order by count_sortid for xml path('')
),1,1,'') as dname

使用 STUFF 函數(shù)配合 SQL 語句 FOR XML PATH 來實現(xiàn)行轉(zhuǎn)列。

SQL語句中通過 CASE 來判斷人數(shù),大于1則顯示人數(shù)和總分,否則直接顯示分值,并在前面加上職務(wù) lname 字段,并以 count_sortid 進(jìn)行排序,數(shù)值越小的職務(wù)越往前排

3v_pj_rep1_lname_score a group by projectcid,wxmpcid對視圖樣本進(jìn)行項目ID和被評價人ID進(jìn)行分組統(tǒng)計

小結(jié)

SQL Server 中的 STUFF 函數(shù)是將字符串插入到另一個字符串中。 它從第一個字符串的開始位置刪除指定長度的字符;然后將第二個字符串插入到第一個字符串的開始位置。

具體語法請參照:https://learn.microsoft.com/zh-cn/sql/t-sql/functions/stuff-transact-sql?view=sql-server-ver16&redirectedfrom=MSDN

至此STUFF的函數(shù)使用我們就介紹到這里,具體使用中我們還需要靈活掌握,對結(jié)果數(shù)據(jù)的細(xì)節(jié)可能要進(jìn)一步進(jìn)行處理,以滿足我們的統(tǒng)計要求。并可設(shè)計導(dǎo)出到 WORD或EXCEL文件進(jìn)行下載。

到此這篇關(guān)于MS SQL Server STUFF實現(xiàn)統(tǒng)計記錄行轉(zhuǎn)為列顯示的文章就介紹到這了,更多相關(guān)SQL 行轉(zhuǎn)為列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL Server手工插入標(biāo)識列的方法

    SQL Server手工插入標(biāo)識列的方法

    這篇文章介紹了SQL Server手工插入標(biāo)識列的方法,有需要的朋友可以參考一下
    2013-10-10
  • 優(yōu)化 SQL Server 索引的小技巧

    優(yōu)化 SQL Server 索引的小技巧

    SQL Server中有幾個可以讓你檢測、調(diào)整和優(yōu)化SQL Server性能的工具
    2012-08-08
  • WIN10運行SQL2000安裝程序時沒有反應(yīng)的問題解決辦法

    WIN10運行SQL2000安裝程序時沒有反應(yīng)的問題解決辦法

    Win10系統(tǒng)上安裝2000數(shù)據(jù)庫或者msde的數(shù)據(jù)庫經(jīng)常在打開第一步安裝的時候就報錯或者沒有反應(yīng),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • SQL中的鍵與約束

    SQL中的鍵與約束

    本文圍繞SQL約束展開,核心是通過not null、default、主鍵、唯一鍵、自增長、外鍵等約束類型,解決數(shù)據(jù)庫數(shù)據(jù)無效、重復(fù)及表間關(guān)聯(lián)混亂問題,保障數(shù)據(jù)可靠性,為數(shù)據(jù)庫設(shè)計和管理提供基礎(chǔ)指導(dǎo),本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-10-10
  • SQL Server數(shù)據(jù)庫遷移到MySQL的完整指南

    SQL Server數(shù)據(jù)庫遷移到MySQL的完整指南

    在企業(yè)應(yīng)用開發(fā)中,數(shù)據(jù)庫遷移是一個常見的需求,隨著業(yè)務(wù)的發(fā)展,企業(yè)可能會從 SQL Server 轉(zhuǎn)向 MySQL ,原因可能是成本、性能、跨平臺兼容性等,本文將詳細(xì)介紹如何將 SQL Server 數(shù)據(jù)庫遷移到 MySQL,并提供一些實用的技巧和注意事項,需要的朋友可以參考下
    2025-02-02
  • SQL Server數(shù)據(jù)庫開發(fā)的二十一條法則

    SQL Server數(shù)據(jù)庫開發(fā)的二十一條法則

    如果你正在負(fù)責(zé)一個基于SQL Server的項目,或者你剛剛接觸SQL Server,你都有可能要面臨一些數(shù)據(jù)庫性能的問題,這篇文章會為你提供一些有用的指導(dǎo)(其中大多數(shù)也可以用于其它的DBMS)。
    2010-06-06
  • MSSQL2005數(shù)據(jù)附加失敗報錯3456解決辦法

    MSSQL2005數(shù)據(jù)附加失敗報錯3456解決辦法

    今天在把數(shù)據(jù)庫備份出去,再到另一臺服務(wù)器上進(jìn)行數(shù)據(jù)還原時出現(xiàn),數(shù)據(jù)附加失敗錯誤3456提示,下面來看我的解決過程
    2012-09-09
  • SqlServer 執(zhí)行計劃及Sql查詢優(yōu)化初探

    SqlServer 執(zhí)行計劃及Sql查詢優(yōu)化初探

    最近總想整理下對MSSQL的一些理解與感悟,卻一直沒有心思和時間寫,晚上無事便寫了一篇探索MSSQL執(zhí)行計劃,本文講執(zhí)行計劃但不僅限于講執(zhí)行計劃。
    2010-05-05
  • SQL?Server?查詢設(shè)置??LIKE/DISTINCT/HAVING/排序詳解

    SQL?Server?查詢設(shè)置??LIKE/DISTINCT/HAVING/排序詳解

    本文介紹了在SQLServer中使用LIKE、DISTINCT、HAVING等條件語句進(jìn)行復(fù)雜查詢的方法,包括模糊查詢、去重查詢、分組過濾以及排序等技巧,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • sqlserver exists,not exists的用法

    sqlserver exists,not exists的用法

    exists,not exists的使用方法示例,需要的朋友可以參考下。
    2009-12-12

最新評論

定结县| 翁牛特旗| 郑州市| 江阴市| 天津市| 浦城县| 阿拉善右旗| 兰州市| 大关县| 波密县| 双江| 井研县| 时尚| 揭东县| 阳原县| 瑞金市| 关岭| 吴堡县| 河北省| 曲周县| 萝北县| 青田县| 界首市| 云林县| 弥勒县| 南平市| 湾仔区| 临漳县| 吴川市| 故城县| 黑水县| 平顺县| 北碚区| 彰武县| 修文县| 望都县| 衡东县| 黄大仙区| 许昌县| 和龙市| 博湖县|