1. 程式人生 > >老生常談之SQL Server (行轉列,列轉行)

老生常談之SQL Server (行轉列,列轉行)

複製程式碼
 1 --靜態的行轉列
 2 --新建一個科目成績表
 3 --三個欄位:學生名稱,科目,成績
 4 CREATE TABLE SubjectScore 
 5 (
 6     StuName nvarchar(20),
 7     SubjectName nvarchar(20),
 8     Fraction decimal(16,2)
 9 )
10 
11 --插入4條資料
12 INSERT INTO SubjectScore
13 VALUES(N'孔子',N'語文',99)
14 
15 INSERT INTO SubjectScore
16 VALUES(N'孔子',N'數學
',80) 17 18 INSERT INTO SubjectScore 19 VALUES(N'諸葛',N'語文',75.5) 20 21 INSERT INTO SubjectScore 22 VALUES(N'諸葛',N'數學',66) 23 24 --行轉列 25 SELECT StuName, 26 ISNULL(SUM(case SubjectName when N'語文' then isnull(Fraction,0)end),0)as N'語文', 27 ISNULL(SUM(case SubjectName when N'數學' then isnull(Fraction,0)end
),0)as N'數學' 28 FROM SubjectScore 29 GROUP BY StuName 30 31 --如果加了個英語科目怎麼辦?沒錯,程式碼要改 32 --下面我們加個英文科目 33 INSERT INTO SubjectScore 34 VALUES(N'諸葛',N'英語',66) 35 36 --修改程式碼後行轉列 37 SELECT StuName, 38 ISNULL(SUM(case SubjectName when N'語文' then isnull(Fraction,0)end),0)as N'語文', 39 ISNULL(SUM(case SubjectName when
N'數學' then isnull(Fraction,0)end),0)as N'數學', 40 ISNULL(SUM(case SubjectName when N'英語' then isnull(Fraction,0)end),0)as N'英語' 41 FROM SubjectScore 42 GROUP BY StuName
複製程式碼

相關推薦

老生常談SQL Server 轉行

1 --靜態的行轉列 2 --新建一個科目成績表 3 --三個欄位:學生名稱,科目,成績 4 CREATE TABLE SubjectScore 5 ( 6 StuName nvarchar(20), 7 SubjectName nvarchar(20), 8 F

SQL Server 動態引數化表名、分組欄位、欄位值

一.本文所涉及的內容(Contents) 二.背景(Contexts)   其實行轉列並不是一個什麼新鮮的話題了,甚至已經被大家說到爛了,網上的很多例子多多少少都有些問題,所以我希望能讓大家快速的看到執行的效果,所以在動態列的基礎上再把表、分組欄位、行轉列欄位、值這四個行轉列固定需要的值變成真正意義的

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 pivotunpivot轉行

【pivot】行轉列:多行變一列 假設學生成績表Score1 Name Subject Score 小張 語文 88 小花 數學 89 小張

Databricks 第11篇:Spark SQL 查詢轉行、Lateral View、排序

本文分享在Azure Databricks中如何實現行轉列和列轉行,並介紹對查詢的結果進行排序的各種方式。 一,行轉列 在分組中,把每個分組中的某一列的資料連線在一起: collect_list:把一個分組中的列合成為陣列,資料不去重,格式是['a','a','b'] collect_set:把一個分組中的

安全攻防SQL注入通過sqlmap搞定所有問題

第一步: sqlmap基於Python,所以首先下載: http://yunpan.cn/QiCBLZtGGTa7U  訪問密碼 c26e 第二步: 安裝Python,將sqlmap解壓到Python根目錄下; 第三步: 小試牛刀,檢視sqlmap版本: python sqlmap/sqlmap.py -

設計模式學習——代理模式Proxy Pattern 強制代理強校驗防繞過

arr cnblogs 其他 測試 auth using color ref use 上周溫習了代理模式:http://www.cnblogs.com/chinxi/p/7354779.html 在此進行拓展,學習強制代理。但是發現網上大多例子都有個“天坑”(我是這麽認為的

SQL Server 轉行

結果 name pre toolbar des null 表名 再次 arch 一、多行轉成一列(並以","隔開) 表名:A 表數據: 想要的查詢結果: 查詢語句: SELECT name , value = ( STUFF(( SELECT

SQL Server 轉行。多成一

一、多行轉成一列(並以","隔開)表名:A表資料:想要的查詢結果:查詢語句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A

SQL 統計 欄位 豎向橫向 顯示

在做一些SQL統計時,為了更直觀看到結果,並進行比較,需要把豎向表的部分統計欄位轉成橫向顯示。 原資料格式: wbname        newstime ------------------------------ 瀟湘晨報        直播報道 佛山日報後天 揚子晚

SQL Server計劃操作符具體解釋2——串聯(Concatenation )

-s 而且 article font order close 格式 聚集索引 content 本文接上文:SQL Server 運行計劃操作符具體解釋(1)——斷言(Assert)前言: 依據計劃。本文開始講述另外一個操作符串聯(Concatenation)。讀者能夠依

Python二維列表

主要有三種方法: 方法一:雙層遍歷 #encoding=utf-8 """ 功能:列表的行轉列【三種方法】 """ #二維陣列變換 行轉化成列,列轉化成行 lista=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] #方法一: #使用列表推導 list

SQL語句實現

within sel 11g wm_concat 進行 com 10g 本地測試 from 最近在維護一個項目,出現了一下bug需要進行調試,於是把正式庫上面的代碼搬到本地庫上面,數據庫是本地的,跑項目的時候調試發現代碼裏面帶有wmsys.wm_concat函數的SQL語句

MySQL開發技巧 第二禪 轉行、生成唯一的序列、刪除重複的資料

一、如何進行行列或者列行的轉換     行轉列的關鍵是union ,列轉行的關鍵是join     需要進行行轉列的場景         報表的設計   

Oracle 動態SQL實現SQL查詢子集

引言 我們都知道Oracle的Pivot的In()裡是不能跟SQL查詢語句的,必須是已知的字串結果,然而我專案中遇到的需求這個In 並不是靜態的,而是根據我傳遞的條件來篩選,一開始想的是解析XML,可惜轉為XML之後,有相同的重複的節點,解析太麻煩,於是想通過

SQL查詢語句橫向顯示

示例一、 表資料: 查詢結果: 方法一: SELECT t.name, (SELECT SUM(h.amount) FROM test2 h WHERE h.mold = 'm1' AND h.name = t.nam

SQL成一

CREATE TABLE [dbo].[a]([id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,[value] [nchar]

mysql sql語句:問題

存在表score,記錄學生的考試成績,如下圖所示:                現要求以 學生姓名,語文,數學,英語 這種格式顯示學生成績,如下圖所示                具體步驟如下:1、首先,使用case when函式輸出單個課程的成績case when co

經常用到的透視函式&轉行函式 PIVOT()&UNPIVOT

 說明: 工作中經常遇到一組or一條資料按照不同型別被分成多條資料,如 一條合同的分期還款賬單按照不同型別被分成本金,利息,管理費等, 資料統計工作中,一條合同一期就會分成多條合同 如 實際工作中 常需要將同一期多條資料整合成一期並且賬單條目型別橫向顯示,即資料透視過程:

sql查詢結果, 有多少多少

普通行列轉換 問題:假設有張學生成績表(tb)如下: 姓名 課程 分數 張三 語文 74 張三 數學 83 張三 物理 93 李四 語文 74 李四 數學 84 李四 物理 94 想變成(得到如下結果):  姓名 語文 數學 物理  ---- ---- ---- ----