1. 程式人生 > >SqlServer行轉列

SqlServer行轉列



SELECT  
    examinee_name as '考官評分',  
    MAX(  
        CASE examiner_name  
        WHEN '考官1' THEN  
            SCORE  
        ELSE  
            0  
        END  
    )  as '考官1' ,  
    MAX(  
        CASE examiner_name  
        WHEN '考官2' THEN  
            SCORE  
        ELSE  
            0
END ) as '考官2' , MAX( CASE examiner_name WHEN '考官3' THEN SCORE ELSE 0 END ) as '考官3', MAX( CASE examiner_name WHEN '考官4' THEN SCORE ELSE 0 END
) as '考官4', MAX( CASE examiner_name WHEN '考官5' THEN SCORE ELSE 0 END ) as '考官5', MAX( CASE examiner_name WHEN '考官6' THEN SCORE ELSE 0 END ) as
'考官6', MAX( CASE examiner_name WHEN '考官7' THEN SCORE ELSE 0 END ) as '考官7', t_kgpj_examinee.interview_score as '面試評分' FROM t_kgpj_grade ,t_kgpj_examinee where t_kgpj_examinee.fname=t_kgpj_grade.examinee_name GROUP BY examinee_name,t_kgpj_examinee.interview_score;

效果圖
這裡寫圖片描述

其他需求

SELECT 
  examinee_id,
  examinee_name,
  考官1_402881135ff22b9d015ff230574a0000,
  考官2_402881135ff22b9d015ff23057700001,
  考官3_402881135ff22b9d015ff23057720002,
  考官4_402881135ff22b9d015ff23057750003,
  考官5_402881135ff22b9d015ff23057770004,
  考官6_402881135ff22b9d015ff230577a0005,
  考官7_402881135ff22b9d015ff230577c0006,
  interview_score 
FROM
  (SELECT 
    examinee_id,
    examinee_name,
    score,
    examiner_name + '_' + examiner_id AS nid,
    t_kgpj_examinee.interview_score 
  FROM
    t_kgpj_grade,
    dbo.t_kgpj_examinee 
  WHERE t_kgpj_grade.examinee_name = t_kgpj_examinee.fname) AS g PIVOT (
    AVG(g.score) FOR g.nid IN (
      考官1_402881135ff22b9d015ff230574a0000,
      考官2_402881135ff22b9d015ff23057700001,
      考官3_402881135ff22b9d015ff23057720002,
      考官4_402881135ff22b9d015ff23057750003,
      考官5_402881135ff22b9d015ff23057770004,
      考官6_402881135ff22b9d015ff230577a0005,
      考官7_402881135ff22b9d015ff230577c0006
    )
  ) T 

相關推薦

sqlserver

微軟 技術 all drop 記錄 記錄拆分 div student 數學 1、行轉列 微軟官方的圖: 方法二 -- 行轉列 DROP TABLE studentB; CREATE TABLE studentB (姓名 varchar(10),語文

sqlserver 、字串、自動生產指令碼

行轉列,老生常談的問題。這裡總結一下網上的方法。 1、生成測試資料: CREATE TABLE human( name NVARCHAR(5), --姓名 norm NVARCHAR(5), --指標 score INT , --分數

ASP.NET SQLServer ,不固定,動態 的實現

前言 剛開始工作就成了被溫水煮的青蛙的話,那該有多難吃啊。所以要保持冷靜的頭腦,好好思考自己該做的不該做的事,好好的提升自己的能力,給自己加點料。嗯,這樣就算真被煮熟了,也會可口很多吧。 問題背景 這個問題是前面工作中遇到的,經過一番努力最終解決了。在

SqlServer

SELECT examinee_name as '考官評分', MAX( CASE examiner_name WHEN '考官1'

sqlserver轉行(PIVOT與UNPIVOT)

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

SqlServer PIVOT函式快速實現,UNPIVOT實現轉行

我們在寫Sql語句的時候沒經常會遇到將查詢結果行轉列,列轉行的需求,拼接sql字串,然後使用sp_executesql執行sql字串是比較常規的一種做法。但是這樣做實現起來非常複雜,而在SqlServer2005中我們有了PIVOT/UNPIVOT函式可以快速實現行轉列和

sqlserver報表統計——引數化動態PIVOT

先列出所有表結構: --title 報表 --table 實收水費:hx_t_received --欄位 收費部門id:hx_fdepartmentid 1、收費部門名稱:hx_fdepartmentname 應收水費資訊ID:hx_freceivableid --

SQL

png 英語 姓名 create case when src clas 行轉列 序號 一、使用場景   當系統中有匯總和明細的需求時,一般通過SQL來實現,匯總 就是 根據條件顯示出全部的數據,明細 就是 一條匯總對應的詳細信息。   行轉列通常用於實現明細的時候。

mysql

行轉列最近遇到一需求原始數據如下:mysql> select id,sdkname,sid,date,total_count from u1ge_query_log;+------+----------------+------+------------+-------------+| id | s

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

轉換一個字段中含有多個另外一張表的id | |

ret .net sub 模式 end posit tex 匹配 replace 1、Oracle Function --入參:表 id /* cxcyxm02 :操作表,含有一個存儲另一張表(xs0101)多個主鍵id的字段  ids :操作表的主鍵 i

Oracle

cat pre case nbsp 運用 分隔 nvl ase partition 一、簡易運用 ——>沒轉之前一個主號綁定多個副號的多行輸出(像移動的歡樂在線) SELECT f.town_name 鎮區, f.school_name 學校,

Oracle根據【日期】組,其他條件根據PIVOT。使每個日期條件關聯的其他數據只有一行。

col acl time pivot per clas 一行 crop group select OPER_TIME, MICROPAY, REFUND from ( select trunc(oper_time) oper_time,

SQL經典例子(轉載)

htm har server2 str union sdn ltrim sql ue4 行轉列問題總結 1、行轉列 ---1、最簡單的行轉列 /* 問題:假設有張學生成績表(tb)如下: 姓名 課程 分數 張三 語文 74 張三 數學 83 張三 物理 93 李

mysql轉換

pan where mys 作用 統計 detail null 這就是 英語 http://blog.csdn.net/sinat_27406925/article/details/77507478 mysql 行列轉換 ,在項目中應用的極其頻繁,尤其是一些金融項目裏的報表

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,

MySQL轉行

展示 course order by rem core null innodb tail mysql 行轉列 例如:把圖1轉換成圖2結果展示 圖1 圖2 CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NU