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列,就...