1樓:餘興斌
select 班級,語文=(select count(*) from 學生表 where 選修科目='語文' and t.班級),數學=(select count(*) from 學生表 where 選修科目='數學' and t.班級),化學=(select count(*) from 學生表 where 選修科目='化學' and t.
班級) from 班級表 t
2樓:
我給你一個oracle資料庫的語句吧,不知道你用的什麼資料庫,參考一下解決思路吧
select 班級,sum(decode(選修科目,'語文',1,0)) ,sum(decode(選修科目,'數學',1,0)) ,sum(decode(選修科目,'化學',1,0)) from 學生資訊表 group by 班級
只要把涉及的科目加上就能得到人數,sum(decode(選修科目,'語文',1,0))
decode函式把 選修科目 語文 翻譯為1,其他為零,然後把1加起來就是語文科目的人數了
其他資料庫有沒有這種功能的函式呢,我不知道,你可以查一查。
再給你進一步提供思路
decode(expression,val1,trans1,val2,trans2,default)
相當於if expression=val1 then
return trans1
else if expression=val2 then
return trans2
else
return default
end if
希望對你解決思路有所幫助。
3樓:匿名使用者
其實這就是一個將列轉成行的典型sql問題
到這兒看看吧
SQL中豎表變橫表及統計功能實現的問題
在源表加一列月份,輸入月份值。然後對源資料使用 資料透視表 沒注意,你是說sql select 部門 費用專案 sum case when substring 日期 5,2 01 then 金額 else 0 end as 1月總 sum case when substring 日期 5,2 02 ...
sql語句問題,SQL語句問題
sql語句 select a.姓名,a.計費id,b.單元編號,b.單金額,c,年月 from a,b,c where a.計費id b.計費id and b.單元編號 c.單元編號 說明 這個表結構其實b表是中間關係表,如果真實的資料結構就是這個樣子的話,那麼可能是資料量大並且經常需要查詢每個表,...
SQL的問題,SQL的一個問題
將截斷字串或二進位制資料。這個是你插入的資料大於你欄位定義的長度,注意一個漢字是佔兩位的 char 我記得預設是1個還是2個位元組,應該定義為char 10 你又沒有聚集函式幹嘛寫group by去掉group by,或者你要是想分組就這樣 select 課程號,min 學號 min 成績 from...