sql豎表轉(zhuǎn)橫表 SQL如何進行縱表轉(zhuǎn)橫表?
SQL如何進行縱表轉(zhuǎn)橫表?SELECT 姓名,"數(shù)學(xué)"=MAX(CASE 課程 WHEN "數(shù)學(xué)" THEN 分數(shù) ELSE 0 END),"語文"=MAX(CASE 課程 WHEN "語文" THE
SQL如何進行縱表轉(zhuǎn)橫表?
SELECT 姓名,"數(shù)學(xué)"=MAX(CASE 課程 WHEN "數(shù)學(xué)" THEN 分數(shù) ELSE 0 END),"語文"=MAX(CASE 課程 WHEN "語文" THEN 分數(shù) ELSE 0 END) ,"英語"=MAX(CASE 課程 WHEN "英語" THEN 分數(shù) ELSE 0 END) FROM TB GROUP BY 姓名 --或者 SELECT 姓名, ,"數(shù)學(xué)"=SUM(CASE 課程 WHEN "數(shù)學(xué)" THEN 分數(shù) ELSE 0 END),"語文"=SUM(CASE 課程 WHEN "語文" THEN 分數(shù) ELSE 0 END) ,"英語"=SUM(CASE 課程 WHEN "英語" THEN 分數(shù) ELSE 0 END) FROM TB GROUP BY 姓名
SQL如何進行縱表轉(zhuǎn)橫表?
因為你沒寫commit用sqlplus那必須寫提交命令,才算真正向數(shù)據(jù)庫提交數(shù)據(jù)。當(dāng)前主流應(yīng)用還是使用pl/sql,支持command命令窗口,即包含了sqlplus界面的窗口。
SQL sever中將橫表轉(zhuǎn)縱表時的這段代碼是什么意思,可以詳細解釋一下嗎?
查詢每個 name 中 語文 的最大 result 值,如果 語文 的 result 沒有值,則返回0; 其他數(shù)學(xué)、物理原理一樣;
求教:oracle數(shù)據(jù)庫中怎么樣能將一個縱表變成橫表?
一般行列轉(zhuǎn)置,有兩種做法 一種是case,但是由于case需要提前知道列數(shù),所以在很多情況下不能滿足 所以出現(xiàn)了動態(tài)語句case,通過動態(tài)SQL語句的組裝,實現(xiàn)了動態(tài)的列的拼裝。但是語句復(fù)雜度很高 所以另一種方式就是靠程序轉(zhuǎn)置,使用一些Hash(JAVA)或Dictionary(C#)等一些對象,可以在程序中輕松地做出轉(zhuǎn)置,但是也有缺點,缺點就是開銷大,原本只處理一次的數(shù)據(jù)(只在數(shù)據(jù)庫處理),現(xiàn)在需要處理兩次(數(shù)據(jù)庫一次,程序一次)
數(shù)據(jù)庫縱表變橫表會不會影響性能?
橫表就是普通的建表方式,如一個表結(jié)構(gòu)為:主鍵、字段1、字段2、字段3。
。
。
如果變成縱表后,則表結(jié)構(gòu)為: 主鍵、字段代碼、字段值。
而字段代碼則為字段1、字段2、字段3。
具體為電信行業(yè)的例子。
以用戶帳單表為例一般出賬時用戶有很多費用客戶,其數(shù)據(jù)一般存儲為:時間,客戶ID,費用科目,費用。
這種存儲結(jié)構(gòu)一般稱為縱表,其特點是行數(shù)多,字段少。
縱表在使用時由于行數(shù)多,統(tǒng)計用戶數(shù)或?qū)τ脩暨M行分檔時還需要進行GROUP BY 操作,性能低,且操作不便,為提高性能,通常根據(jù)需要將縱表進行匯總,形成橫表,比如:時間、客戶ID,基本通話費、漫游通話費,國內(nèi)長途費、國際長途費....。
通常形成一個客戶一行的表,這種表統(tǒng)計用戶數(shù)或做分檔統(tǒng)計時比較方便。
另外,數(shù)據(jù)挖掘時用到的寬表一般也要求是橫表結(jié)構(gòu)。
縱表對從數(shù)據(jù)庫到內(nèi)存的映射效率是有影響的,但細一點說也要一分為二:縱表的初始映射要慢一些;縱表的變更的映射可能要快一些,如果只是改變了單個字段時,畢竟橫表字段比縱表要多很多