比如說,有乙個表
create table tbcoursegrade
( student varchar(10) ,
course varchar(10) ,
grade int
)
然後有一些記錄:
insert into tbcoursegrade (student , course , grade )
values ('小明' , '高數' , 98 ),
('小明' , '英語' , 56 ) ,
('小明' , '語文' , 77 ) ,
('小紅' , '高數' , 89 ),
('小紅' , '英語' , 88 ) ,
('小明' , '語文' , 67 )
insert into tbcoursegrade(student , course , grade )
values ('小公尺' , '高數' ,55)
那麼顯示出來應該是:
student course grade
小明 高數 98
小明 英語 56
小紅 高數 89
小公尺 高數 55
那怎麼才能顯示為
名字 高數 英語 語文
小明 98 56 77
小紅 ******
小公尺 55 null null
這是乙個很經常遇到的問題:將行顯示為列 !!!
下面提供兩種方法:
1,自己連線自己四次
select yuan.student as 姓名 ,
gaoshu.grade as 高數 ,
yingyu.grade as 英語 ,
yuwen.grade as 語文
from tbcoursegrade as yuan
left join tbcoursegrade as gaoshu
on (yuan.student = gaoshu.student and gaoshu.course='高數')
left join tbcoursegrade as yingyu
on (yuan.student = yingyu.student and yingyu.course='英語' )
left join tbcoursegrade as yuwen
on (yuan.student = yuwen.student and yuwen.course='語文')
2,用case語句
select yuan.student as 姓名 ,
max (case when hou.course='高數'
then hou.grade
else null
end ) as 高數成績 ,
max (case when hou.course='英語'
then hou.grade
else null
end ) as 英語成績 ,
max (case when hou.course='語文'
then hou.grade
else null
end) as 語文成績
from tbcoursegrade as yuan
join tbcoursegrade as hou on yuan.student= hou.student
group by yuan.student
Sql 怎樣將某個列轉為行,實
如下圖,的任務就是將圖一轉為圖二 此功能在pb中的交叉報表也可實現 編寫此段 是因為今天遇到客戶有這個需求,自己覺得可以挑戰一下,就嘗試做下來了 如下 create table patient result temp patient code nvarchar 100 date test datet...
sql server 一列顯示為一行
select id,msg stuff select 存號為 convert varchar,s id,10 from t input where id a.id and value 1000000 for xml path 1,1,from input as a wherevalue 100000...
DataTable將行轉成列
以前一直覺得泛型比較好用,一直沒使用datatable,最近發現泛型也不是萬能的,比如將行轉成列。雖然這種在前台js轉比較方便,但可能也需要這樣的介面,提供別人呼叫,還是記錄一下。將行轉成列 datatable dtresult utility.convertdatatabletovertical ...