sql server行轉列問題終極解決
主要應用case語句來解決行轉列的問題
行轉列問題主要分為兩類
1)簡單的行轉列問題:
示例表:
id sid course result
1 2005001 語文 80.0
2 2005001 數學 90.0
3 2005001 英語 80.0
4 2005002 語文 56.0
5 2005002 數學 69.0
6 2005002 英語 89.0
執行
select sid,語文=isnull(sum(case course when '語文' then result end),0),
數學=isnull(sum(case course when '數學' then result end),0),
英語=isnull(sum(case course when '英語' then result end),0)
from result
group by sid
order by sid
得出結果
sid 語文 數學 英語
2005001 80.0 90.0 80.0
2005002 56.0 69.0 89.0
2)較為複雜的行轉列
表1:course
id name
1 語文
2 數學
3 英語
表2:result
id sid course result
1 2005001 語文 80.0
2 2005001 數學 90.0
3 2005001 英語 80.0
4 2005002 語文 56.0
5 2005002 數學 69.0
6 2005002 英語 89.0
declare @sql varchar(8000)
set @sql='select sid'
select @[email protected]
from course order by id
set @[email protected]+' from result group by sid order by sid'
print @sql
exec(@sql)
得出結果
sid 語文 數學 英語
2005001 80.0 90.0 80.0
2005002 56.0 69.0 89.0
相關推薦
sql server行轉列問題終極解決
主要應用case語句來解決行轉列的問題 行轉列問題主要分為兩類 1)簡單的行轉列問題: 示例表: id sid course result 1 2005001 語文 80.02 2005001 數學 90.03 200500
SQL Server 行轉列,列轉行
結果 name pre toolbar des null 表名 再次 arch 一、多行轉成一列(並以","隔開) 表名:A 表數據: 想要的查詢結果: 查詢語句: SELECT name , value = ( STUFF(( SELECT
查詢每個學生每門課程的成績,sql server行轉列實現
本人經常寫sql server指令碼,有時需要行轉列,這裡做個筆記。 練習指令碼 -- 學生表 CREATE TABLE student ( stuid VARCHAR(16) NOT NULL, stunm VARCHAR(20) NOT NULL, PRI
SQL Server 行轉列,列轉行。多行轉成一列
一、多行轉成一列(並以","隔開)表名:A表資料:想要的查詢結果:查詢語句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A
oracle 存儲過程-動態行轉列,解決。
pla gin sel rom con left join from blog creat 包頭 create or replace package pro_test as TYPE out_cursor IS REF CURSOR; procedure A
sql的行轉列(PIVOT)與列轉行(UNPIVOT)
列轉行 gif 而且 碼農 實現 score username info rect 在做數據統計的時候,行轉列,列轉行是經常碰到的問題。case when方式太麻煩了,而且可擴展性不強,可以使用 PIVOT,UNPIVOT比較快速實現行轉列,列轉行,而且可擴展性強
sql service 行轉列操作
ice pack 通過 group by img ora _id select package 通過行換列處理之後: SELECT s.AREA_NAME, max(CASE s.TYPE WHEN ‘CPU‘ THEN s.PRICE ELSE 0 end)CPU,
sql應用行轉列與列轉行
一、行轉列例項: 場景: 今天運營人員讓我提取每個使用者在某種交易型別下每年的交易總金額。 表結構: CREATE TABLE `ORDERS` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `USER_ID` varchar(10
SQL Server 中行轉列 列轉行
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int, Emp3 int, Emp4 int, Emp5 int); GO INSERT INTO pvt VALUES (1,4,3,5,4,4); INSERT INTO pvt VALUES (2,4
LINQ TO SQL 實現行轉列
表結構如下: id NAME result ----------- -------------------- ------ 1 jim 勝 2
SQL Server 動態行轉列(引數化表名、分組列、行轉列欄位、欄位值)
一.本文所涉及的內容(Contents) 二.背景(Contexts) 其實行轉列並不是一個什麼新鮮的話題了,甚至已經被大家說到爛了,網上的很多例子多多少少都有些問題,所以我希望能讓大家快速的看到執行的效果,所以在動態列的基礎上再把表、分組欄位、行轉列欄位、值這四個行轉列固定需要的值變成真正意義的
老生常談之SQL Server (行轉列,列轉行)
1 --靜態的行轉列 2 --新建一個科目成績表 3 --三個欄位:學生名稱,科目,成績 4 CREATE TABLE SubjectScore 5 ( 6 StuName nvarchar(20), 7 SubjectName nvarchar(20), 8 F
行轉列:SQL SERVER PIVOT與用法解釋
在資料庫操作中,有些時候我們遇到需要實現“行轉列”的需求,例如一下的表為某店鋪的一週收入情況表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我們先插入一些模擬資料: INSERT INTO WEEK_INCOME
SQL行轉列
png 英語 姓名 create case when src clas 行轉列 序號 一、使用場景 當系統中有匯總和明細的需求時,一般通過SQL來實現,匯總 就是 根據條件顯示出全部的數據,明細 就是 一條匯總對應的詳細信息。 行轉列通常用於實現明細的時候。
sql內置函數pivot強大的行轉列功能
子查詢 註意 ges 中一 rom cnblogs blog 聚合函數 星期六 http://blog.csdn.net/xb12369/article/details/8149608 http://www.cnblogs.com/lwhkdash/archive/20
T-sql 行轉列,數據庫查詢分頁
tput substr between dep and alt rom img lec 1 USE [APS_Future_FT] 2 GO 3 /****** Object: StoredProcedure [dbo].[A_CrudePrice] Scr
SQL行轉列經典例子(轉載)
htm har server2 str union sdn ltrim sql ue4 行轉列問題總結 1、行轉列 ---1、最簡單的行轉列 /* 問題:假設有張學生成績表(tb)如下: 姓名 課程 分數 張三 語文 74 張三 數學 83 張三 物理 93 李
sql pivot(行轉列) 和unpivot(列轉行)的用法
sql clas 數據 sele core unp null col style 1、PIVOT用法(行轉列) select * from Table_Score as a pivot (sum(score) for a.name in ([語文],[數學],[外語],[
Sql行轉列的兩個小例子
SQL行轉列 所謂行轉列就是將某一個category型別的列(nx1的矩陣,實質是有m類),目標是將多行轉換成為多列(新增m列)。 例1:模擬順豐SQL小例子 ##順豐面試題(SQLite編碼實現題目) import sqlite3 conn=sqlite3.con
SQL語句實現行轉列
within sel 11g wm_concat 進行 com 10g 本地測試 from 最近在維護一個項目,出現了一下bug需要進行調試,於是把正式庫上面的代碼搬到本地庫上面,數據庫是本地的,跑項目的時候調試發現代碼裏面帶有wmsys.wm_concat函數的SQL語句