對於有些業務來說,資料在表中的儲存和其最終的表現恰好相當於把源表倒轉,那麼這個時候我們就碰到了如何把行轉化為列的問題,為了簡化問題,我們且看如下查詢出來的資料,您不必關心表的設計以及sql語句:
源表如下:(表名為info)
------------------------------------------------------------------------
select username,
語文=(case course when '語文' then grade else 0 end),
數學=(case course when '數學' then grade else 0 end),
政治=(case course when '政治' then grade else 0 end)
from info
看看我們的執行結果:
看到這後,我們都知道應該做什麼了,進行分組,按姓名進行分組,並且對三門課程分別求和;
------------------------------------------------------------------------
目標結果:
SQL語句為:
select username, 語文=sum(case course when '語文' then grade else 0 end), 數學=sum(case course when '數學' then grade else 0 end), 政治=sum(case course when '政治' then grade else 0 end)from info group by username
select username,
語文=sum(case course when '語文' then grade else 0 end),
數學=sum(case course when '數學' then grade else 0 end),
政治=sum(case course when '政治' then grade else 0 end)
from info
group by username