1. 程式人生 > >SQL 2008行列轉換的pivot--產生動態列

SQL 2008行列轉換的pivot--產生動態列

 突然間發現,已經好久沒有寫部落格了,也好久沒用SQLServer進行開發了。由於目前專案開發的原因,對於SQL Server才重視起來。發現SQL Server也引進了不少新的東西,現將一個不錯的動態行列轉換的例子給大家分享一下,行列轉換的函式為:pivot,unpivot
SQL 2008行列轉換的pivot [sql]  IF OBJECT_ID('tempdb..#ABC') IS NOT NULL   DROP TABLE #ABC   create table #ABC   (   ID  INT   ,UserID BIGINT     ,UserExamID INT    ,TestPaperID INT       ,QuestionID INT   ,AnswerID   INT   ,Ctime DATETIME   )   INSERT INTO #ABC   SELECT 1,120629210042331600,1,3,22,49,GETDATE() UNION ALL   SELECT 2,120629210042331600,1,3,23,51,GETDATE() UNION ALL   SELECT 3,120629210042331600,1,3,24,56,GETDATE() UNION ALL   SELECT 4,120629210042331600,1,3,25,62,GETDATE() UNION ALL   SELECT 5,120629210042331600,1,3,26,66,GETDATE() UNION ALL   SELECT 6,120629210042331600,1,3,27,72,GETDATE() UNION ALL   SELECT 7,120629210042331600,1,3,28,77,GETDATE() UNION ALL   SELECT 8,120629210042331600,1,3,29,81,GETDATE() UNION ALL   SELECT 9,120629210042331600,1,3,30,86,GETDATE() UNION ALL   SELECT 10,120629210042331600,1,3,31,90,GETDATE() UNION ALL   SELECT 1,120629210011732588,1,3,22,49,GETDATE() UNION ALL   SELECT 2,120629210011732588,1,3,23,51,GETDATE() UNION ALL   SELECT 3,120629210011732588,1,3,24,56,GETDATE() UNION ALL   SELECT 4,120629210011732588,1,3,25,62,GETDATE() UNION ALL   SELECT 5,120629210011732588,1,3,26,66,GETDATE() UNION ALL   SELECT 6,120629210011732588,1,3,27,72,GETDATE() UNION ALL   SELECT 7,120629210011732588,1,3,28,77,GETDATE() UNION ALL   SELECT 8,120629210011732588,1,3,29,81,GETDATE() UNION ALL   SELECT 9,120629210011732588,1,3,30,86,GETDATE() UNION ALL   SELECT 10,120629210011732588,1,3,31,90,GETDATE()     SELECT * FROM #ABC  
[sql]  DECLARE @s NVARCHAR(4000)   SELECT @s = ISNULL(@s + ',', '') +  QUOTENAME(QuestionID)   FROM  (select distinct QuestionID from #ABC) as A ---列名不要重複   Declare @sql NVARCHAR(4000)   SET @sql='    select r.* from   (select UserID,QuestionID,AnswerID from #ABC) as t   pivot   (   max(t.AnswerID)   for t.QuestionID in ('
[email protected]
+')   ) as r'   EXEC( @sql) 

相關推薦

SQL 2008行列轉換pivot--產生動態

 突然間發現,已經好久沒有寫部落格了,也好久沒用SQLServer進行開發了。由於目前專案開發的原因,對於SQL Server才重視起來。發現SQL Server也引進了不少新的東西,現將一個不錯的動態行列轉換的例子給大家分享一下,行列轉換的函式為:pivot,unpi

SQL Server中行列轉換 Pivot UnPivot

PIVOT用於將列值旋轉為列名(即行轉列),在SQL Server 2000可以用聚合函式配合CASE語句實現 PIVOT的一般語法是:PIVOT(聚合函式(列) FOR 列 in (…) )AS P 完整語法: table_source PIVOT( 聚合函式(value_column) FOR piv

SQL Server 2005 中行列轉換(Pivot 和 UNPivot的使用)

針對sql2005  系統提供兩個新的關鍵字 PIVOT 和UNPIVOT可用來作此類操作.語法規則<pivot_clause> ::=        ( aggregate_function ( value_column )         FOR pivot_

SQL Server 2008 行列轉換操作

行轉列操作,主要用到了Pivot Pivot語法結構: Pivot (A) for B in(C) A:Max(Total),表示要顯示的合計值, B:Monthly,原始資料的列頭,就是要把它的資料轉化為列的欄位的名字 C:動態列 B的資料內容 資料表指令

Sql行列轉換

serve server .com unpivot 新的 nbsp div code image 創建表scores 一、傳統的行列轉換 縱表轉橫表 我們要轉成的橫表是這樣子的: pivot是sql server 2005 提供的運算符,所以只要數據庫在05版本以上

淺談SQLServer行列轉換PIVOT函式的使用

以學生表舉個例子,展現學生的各門學科和成績,我們先新建一張表(表中插入測試值的時候用到了rand取隨機數,沒用過的可以瞭解下-->點選開啟): Create Table Students(Name varchar(10), Subject Nvarchar(10),S

SQL語句行列轉換(附帶資料庫、表、檢視操作)

本來只是想解決怎麼把資料的行和列進行轉換的,但最近覺得一些資料庫SQL語句的操作,很久沒用了,有點陌生。所以也就隨筆記錄一些簡單但很基本的操作。 我的資料庫是MSSQL2005. 第一部分主要的操作包含:資料庫的建立、刪除,表的增、刪、改,表中資料的增、刪、改、查,檢

SQL SERVER透視轉換(行旋轉

所謂的透視轉化通俗點就是吧資料庫的行轉成列的一種處理方式,透視轉換是一種常用的技巧,在生活中人們更喜歡看經過透視轉化的資料表,這種表更加直觀和簡潔,下面將介紹兩種處理方式。 樣例資料: USE tempdb; IF OBJECT_ID('dbo.Orders', 'U')

SQL Server行列轉換

1、行列轉換 建立建立學生成績表並新增學生成績資訊。 /*-建立學生成績表-*/ CREATE TABLE StuScore ( StuName VARCHAR(20), --姓名 Subject VARCHAR(20), --科目 Score INT

SQLPIVOT 行列轉換

tor 子句 輸入 ble ont 運算符 之間 忽略 sql語句 本文導讀:T-SQL語句中,Pivot運算符用於在列和行之間對數據進行旋轉或透視轉換,PIVOT命令可以實現數據表的列轉行,同時執行聚合運算,UNPIVOT則與其相反,實現數據的行轉列。 PIVOT通過將

[資料庫] SQL查詢語句錶行列轉換及一行資料轉換成兩

本文主要講述了SQL查詢語句表之間的行列轉換,同時也包括如何將一行資料轉換成兩列資料的方法、子查詢的應用、decode函式的用法。希望文章對你有所幫助~ 1.建立資料庫表及插入資料2.子查詢統計不同性質的學生總數3.一行資料轉換成兩列資料 union all4.錶行列資料轉

sql server動態行列轉換

修改 esc === 邏輯 bubuko com context bject content 原文鏈接:https://www.cnblogs.com/gaizai/p/3753296.html sql server動態行列轉換 一.本文所涉及的內容(Contents)

SQL行列轉換6種方法

ati cin 列名 ada ott 計劃 ase mit all 在進行報表開發時,很多時候會遇到行列轉換操作,很對開發人員針對於SQL級別行列轉換操作一直不甚理解,今天正好抽空對其進行了一些簡單的總結。這裏主要列舉3種可以實現SQL行列轉換的方法,包括通用SQL解法以及

hive sql 行列轉換

-- 對一張大表的每一行,後面加多種label值 -- 其實就是笛卡爾積,舉例 -- SELECT * FROM dev.dev_jiadian_user_yuge_temp -- CROSS JOIN -- ( -- SELECT 0 AS label -- UNION ALL --

Oracle 行列轉換函式pivot的使用(二)

關鍵函式pivot,其用法如下 pivot(聚合函式 for 列名 in(型別)) select * from table_name pivot(max(column_name)           

LinQ實現DataTable不定行轉 行列轉換

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDemo2.aspx.cs" Inherits="LinqDemo2" %> <!DOCTYPE html PUBLIC "-//W3C//

LinQ實現DataTable不定行轉 行列轉換,有圖

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDemo2.aspx.cs" Inherits="LinqDemo2" %>   <!DOCTYPE html PUBLIC "-//W3C//DTD

PIVOT/UNPIVOT的用法(行列轉換)

--PIVOT/UNPIVOT的用法(行列轉換)   --PIVOT的用法:   --首先建立測試表,然後插入測試資料   create table test(id int,name varchar(20),quarter int,profile int)   insert int

MySQL 行列轉換變化各種方法實現總結(行變報表統計 變行資料記錄統計等)

                前言:mysql行列變化,最難的就是將多個列變成多行,使用的比較多的是統計學中行變列,列變行,沒有找到現成的函式或者語句,所以自己寫了儲存過程,使用動態sql來實現,應用業務場景,使用者每個月都有使用記錄數錄入一張表,一個月一個欄位,所以表的欄位是動態增長的,現在需要實時統計當

SQL Server 2008中的Pivot和UnPivot

                今天給新成員講解PIVOT 和 UNPIVOT示例,順便整理了一下其用法。這是自SQL Server 2005起提供的新功能。首先看PIVOT示例:基本表資料:IF NOT OBJECT_ID('tb_Income') IS NULL    DROP TABLE [tb_Inc