sql關於行列轉換的問題,sql 關於行列轉換的一個問題

2022-08-10 04:20:11 字數 1446 閱讀 6956

1樓:

select 課程,sum(小明) as 小明 ,sum(張三) as 張三  from (

select 課程,case when  姓名='小明' and 課程='語文' then 分數 when 姓名='小明' and 課程='數學' then 分數    else 0 end as 小明  ,

case when 姓名='張三' and 課程='語文' then 分數  when 姓名='張三' and 課程='分數' then 分數  else 0 end as 張三

from (select 姓名,'語文' as 課程,語文 as 分數 from 表名 union all select 姓名,'數學' as 課程 ,數學 as 分數  from 表名

) as temp ) as temp1 group by 課程

2樓:匿名使用者

--現在有一張表存放以下資料 (基本表為a)

--姓名   語文  數學

--小明   91    92

--張三   93    94

--請問怎麼轉換成下面結果?

--課程  小明   張三

--語文  91      93

--數學  92      94

select coursetype,sum('小明'),sum('張三')

from(

-------------

--結果:

-- 課程 小明 張三

--------------------

-- 語文 91   0

-- 語文 0    93

-- 數學 92   0

-- 數學 0    94

select b.coursetype,

(case when b.peoplename='小明' then b.coursegrade else 0 end) as '小明',

(case when b.peoplename='張三' then b.coursegrade else 0 end) as '張三'

(--結果

-- coursegrade peoplename coursetype

----------------------

-- 91,小明,語文

-- 93,張三,語文

-- 92,小明,數學

-- 94,張三,數學

select

a.語文 as coursegrade,a.姓名 as peoplename,'語文' as coursetype

from a a

union

select

a.數學 as coursegrade,a.姓名 as peoplename,'數學' as coursetype

from a a

)b)group by coursetype;

sql行列轉換

我來說一下 這個可以寫成一句普通的sql,你這寫的是動態sql,效能不如普通sql,並且欄位名 語文 數學 物理 你還無法加上。一句sql select 姓名,語文 sum case 課程 when 語文 then 分數 esle 0 end 數學 sum case 課程 when 數學 then ...

sql語句 轉換大小寫問題,SQL語句 轉換大小寫問題

那你可以把首 來字元提取出來如自 declare it varchar 8 set it it prog select charindex it 1 取出p處在位置,就是你變大寫的位置 select lower it 轉化為小寫 select substring it,charindex it 1,...

sql 問題,sql語句的問題?

請檢查 1,表名,就是 insert into 表名 values 有沒有錯誤 2,insert into的values 必須包含整個表的所有列,你的表只有3個列嗎?其他的可以根據列的資料型別用逗號或者兩個單引號加逗號實現。比如 insert into 表名 values 40001,3,id列,就...