SQL 查询横表变竖表
????????????????????????????? 主表
???????????????? 人名表
按照常規(guī)查詢
SELECT s.SName, c.CName,s2.SCgrade
? FROM S s INNER JOIN SC s2 ON s2.SNo = s.SNo INNER JOIN C c ON c.CNo = s2.CNo
那么結(jié)果是這樣的
?
但是這是橫表 不是我想看到的結(jié)果。
我們要看到這樣的結(jié)果:
那么怎么辦呢?
?? 第一種寫法:SELECT w.SName,
?? sum(case when? w.CNo= 1 then w.SCgrade?? ELSE 0 END) AS '語文',
??? sum(case? WHEN w.CNo =2 THEN? w.SCgrade? ELSE?? 0 END) AS '數(shù)學',
? sum(case when? w.CNo= 3 then w.SCgrade? ELSE? 0 END) AS '英語'
FROM
(SELECT s.SNo,s.SName, s2.CNo, s2.SCgrade? FROM s s INNER JOIN SC s2 ON s2.SNo = s.SNo WHERE s.SNo IN (SELECT c.SNo? FROM sc c GROUP BY c.SNo ))
AS w GROUP BY w.SName
??
? ?第二種寫法: SELECT s.SName,
?? sum(case when? s2.CNo= 1 then s2.SCgrade?? ELSE 0 END) AS '語文',
??? sum(case? WHEN s2.CNo =2 THEN? s2.SCgrade? ELSE?? 0 END) AS '數(shù)學',
? sum(case when? s2.CNo= 3 then s2.SCgrade? ELSE? 0 END) AS '英語'
FROM
?S s INNER JOIN SC s2 ON s2.SNo = s.SNo
INNER JOIN C c ON c.CNo = s2.CNo
?GROUP BY s.SNo,
?s.SName
轉(zhuǎn)載于:https://www.cnblogs.com/kgdxpr/archive/2012/05/02/2479472.html
總結(jié)
以上是生活随笔為你收集整理的SQL 查询横表变竖表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql数据库连接不上本地数据库的解决办法
- 下一篇: mysql列属性auto(mysql笔记