中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server中怎么將行數據轉換為列數據

發布時間:2021-08-04 15:22:12 來源:億速云 閱讀:113 作者:Leah 欄目:數據庫

今天就跟大家聊聊有關SQL Server中怎么將行數據轉換為列數據,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

準備工作

創建表

use [test1]gocreate table [dbo].[student](  [id] [int] identity(1,1) not null,  [name] [nvarchar](50) null,  [project] [nvarchar](50) null,  [score] [int] null, constraint [pk_student] primary key clustered (  [id] asc)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary]) on [primary]go

插入數據

insert into test1.dbo.student(name,project,score)values('張三','android','60'),   ('張三','ios','70'),   ('張三','html5','55'),   ('張三','.net','100'),   ('李四','android','60'),   ('李四','ios','75'),   ('李四','html5','90'),   ('李四','.net','100');

使用Case When和聚合函數進行行專列

語法

select column_name,<aggregation function>(<case when expression>) from database.schema.tablegroup by column_name

語法解析

column_name

數據列列名

aggregation function

聚合函數,常見的有:sum,max,min,avg,count等。

case when expression

case when表達式

示例

select name,max(case project when 'android' then score end) as '安卓',max(case project when 'ios' then score end) as '蘋果',max(case project when 'html5' then score end) as 'html5',max(case project when '.net' then score end) as '.net'from [test1].[dbo].[student]group by name

示例結果

轉換前

轉換后

使用PIVOT進行行專列

PIVOT通過將表達式中一列中的唯一值轉換為輸出中的多個列來旋轉表值表達式。并PIVOT在最終輸出中需要的任何剩余列值上運行聚合,PIVOT提供比一系列復雜的SELECT...CASE語句指定的語法更為簡單和可讀的語法,PIVOT執行聚合并將可能的多行合并到輸出中的單個行中。

語法

select <non-pivoted column>,   [first pivoted column] as <column name>,   [second pivoted column] as <column name>,   ...   [last pivoted column] as <column name> from   (<select query that produces the data>)    as <alias for the source query> pivot (   <aggregation function>(<column being aggregated>) for  [<column that contains the values that will become column headers>]    in ( [first pivoted column], [second pivoted column],   ... [last pivoted column]) ) as <alias for the pivot table> <optional order by clause>;

語法解析

<non-pivoted column>

非聚合列。

[first pivoted column]

第一列列名。

[second pivoted column]

第二列列名。

[last pivoted column]

最后一列列名。

<select query that produces the data>

數據子表。

<alias for the source query>

表別名。

<aggregation function>

聚合函數。

<column being aggregated>

聚合函數列,用于輸出值列,最終輸出中返回的列(稱為分組列)將對其進行分組。

[<column that contains the values that will become column headers>]

轉換列,此列返回的唯一值將成為最終結果集中的字段。

[first pivoted column], [second pivoted column], ... [last pivoted column]

數據行中每一行行要轉換的列名。

<optional order by clause>

排序規則。

示例

select b.Name,b.[android],b.[ios],b.[html5],b.[.net] from (select Name,Project,Score from [test1].[dbo].[student])as apivot(  max(Score)  for Project in ([android],[ios],[html5],[.net])) as border by b.name desc

1、如果輸出列名不能在表轉換列中,則不會執行任何計算。

2、輸出的所有列的列名的數據類型必須一致。

看完上述內容,你們對SQL Server中怎么將行數據轉換為列數據有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平遥县| 麟游县| 新蔡县| 牙克石市| 新乡市| 措勤县| 平顺县| 政和县| 庆云县| 鄢陵县| 洛阳市| 九江市| 五指山市| 丰原市| 乌什县| 旺苍县| 中方县| 磴口县| 兴海县| 江陵县| 大兴区| 双桥区| 盐城市| 清原| 上栗县| 疏附县| 昔阳县| 万载县| 万源市| 潼关县| 望都县| 乌拉特后旗| 汉川市| 滕州市| 丽水市| 沈丘县| 洮南市| 内乡县| 鹤岗市| 华池县| 彝良县|