婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Sql實現(xiàn)行列轉換方便了我們存儲數(shù)據(jù)和呈現(xiàn)數(shù)據(jù)

Sql實現(xiàn)行列轉換方便了我們存儲數(shù)據(jù)和呈現(xiàn)數(shù)據(jù)

熱門標簽:創(chuàng)業(yè)電銷機器人 舞鋼市地圖標注app 沈陽智能外呼系統(tǒng)代理 松原導航地圖標注 浙江地圖標注 滄州營銷外呼系統(tǒng)軟件 電銷機器人虛擬號碼 海南自動外呼系統(tǒng)價格 九鹿林外呼系統(tǒng)怎么收費
從MS Sql Server 2005微軟就推出了pivot和unpivot實現(xiàn)行列轉換,這極大的方便了我們存儲數(shù)據(jù)和呈現(xiàn)數(shù)據(jù)。今天就對這兩個關鍵字進行分析,結合實例講解如何存儲數(shù)據(jù),如何呈現(xiàn)數(shù)據(jù)。
例如學生選課和成績系統(tǒng)中就有一張表,該表存儲了學生的課程成績,我們無法去預料課程的多少,因此一般表會設計為下面這樣:
圖1
 
最后一列是課程編號,這樣無論開學之后還會不會增加課程供學生選擇,都沒有關系。那么我們要呈現(xiàn)給用戶看的報表一般是這樣的:
圖2
 
可以看到存儲數(shù)據(jù)的時候采用的是列式存儲,最終呈現(xiàn)的數(shù)據(jù)是行式顯示,如何實現(xiàn)?下面詳細分析講解:
創(chuàng)建表語句
復制代碼 代碼如下:

USE [master]
GO
/****** Object: Table [dbo].[Table_1] Script Date: 08/06/2013 13:55:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Table_1](
[name] [varchar](50) NOT NULL,
[score] [real] NOT NULL,
[subject_id] [int] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

插入測試數(shù)據(jù)
復制代碼 代碼如下:

insert into [master].[dbo].[Table_1] ([name],[score],[subject_id]) values( '張三' , 90 , 1 );
insert into [master].[dbo].[Table_1] ([name],[score],[subject_id]) values( '張三' , 80 , 2 );
insert into [master].[dbo].[Table_1] ([name],[score],[subject_id]) values( '張三' , 70 , 3 );
insert into [master].[dbo].[Table_1] ([name],[score],[subject_id]) values( '王五' , 50 , 1 );
insert into [master].[dbo].[Table_1] ([name],[score],[subject_id]) values( '王五' , 40 , 2 );
insert into [master].[dbo].[Table_1] ([name],[score],[subject_id]) values( '李四' , 60 , 1 );

現(xiàn)在查詢下Table_1中的數(shù)據(jù)即為圖1中的結果,現(xiàn)在我們要得到圖2的結果,那么使用下面的語句:
復制代碼 代碼如下:

SELECT [name],[1],[2],[3]
FROM [master].[dbo].[Table_1]
pivot
(
sum(score) for subject_id in ([1],[2],[3])
) as pvt
GO

如果本身數(shù)據(jù)庫表存儲的就是圖2那樣,要變成圖1的方式呈現(xiàn),那就需要用unpivot,可以這樣做:
復制代碼 代碼如下:

SELECT [name],[subject_id],[score]
FROM
(
SELECT [name],[1],[2],[3]
FROM [master].[dbo].[Table_1]
pivot
(
sum(score) for subject_id in ([1],[2],[3])
) as pvt
) p
unpivot
(
score for subject_id in([1],[2],[3])
) as unpvt

當然我還是在Table_1的基礎上先用pvt轉為為行式存儲的方式,再用unpivot進行列式呈現(xiàn)。
您可能感興趣的文章:
  • 一個簡單的SQL 行列轉換語句
  • sqlserver2005 行列轉換實現(xiàn)方法
  • C#中DataTable實現(xiàn)行列轉換的方法
  • 淺析SQL語句行列轉換的兩種方法 case...when與pivot函數(shù)的應用
  • sql 普通行列轉換
  • 深入SQL中PIVOT 行列轉換詳解
  • 玩轉-SQL2005數(shù)據(jù)庫行列轉換
  • Oracle實現(xiàn)行列轉換的方法分析
  • JS控制網(wǎng)頁動態(tài)生成任意行列數(shù)表格的方法
  • 數(shù)據(jù)庫實現(xiàn)行列轉換(mysql示例)

標簽:商洛 寶雞 日喀則 ???/a> 臺灣 西藏 咸寧 公主嶺

巨人網(wǎng)絡通訊聲明:本文標題《Sql實現(xiàn)行列轉換方便了我們存儲數(shù)據(jù)和呈現(xiàn)數(shù)據(jù)》,本文關鍵詞  Sql,實現(xiàn),行列,轉換,方便了,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Sql實現(xiàn)行列轉換方便了我們存儲數(shù)據(jù)和呈現(xiàn)數(shù)據(jù)》相關的同類信息!
  • 本頁收集關于Sql實現(xiàn)行列轉換方便了我們存儲數(shù)據(jù)和呈現(xiàn)數(shù)據(jù)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 伊宁县| 同仁县| 五常市| 临猗县| 高要市| 临安市| 红河县| SHOW| 灌南县| 海原县| 八宿县| 军事| 璧山县| 津南区| 张家川| 衡山县| 建水县| 赤峰市| 彩票| 抚宁县| 迭部县| 西昌市| 务川| 台南市| 怀来县| 余庆县| 陈巴尔虎旗| 武威市| 怀宁县| 城口县| 桓仁| 鸡泽县| 新民市| 五常市| 秦皇岛市| 南靖县| 阳高县| 南宫市| 翁源县| 绿春县| 盘山县|