sqlite中文手冊(cè) sql里面怎么把豎表變成橫表?
sql里面怎么把豎表變成橫表?SELECT 姓名,"數(shù)學(xué)"=MAX(CASE 課程 WHEN "數(shù)學(xué)" THEN 分?jǐn)?shù) ELSE 0 END),"語(yǔ)文"=MAX(CASE 課程 WHEN "語(yǔ)文" T
sql里面怎么把豎表變成橫表?
SELECT 姓名,"數(shù)學(xué)"=MAX(CASE 課程 WHEN "數(shù)學(xué)" THEN 分?jǐn)?shù) ELSE 0 END),"語(yǔ)文"=MAX(CASE 課程 WHEN "語(yǔ)文" THEN 分?jǐn)?shù) ELSE 0 END) ,"英語(yǔ)"=MAX(CASE 課程 WHEN "英語(yǔ)" THEN 分?jǐn)?shù) ELSE 0 END) FROM TB GROUP BY 姓名 --或者 SELECT 姓名, ,"數(shù)學(xué)"=SUM(CASE 課程 WHEN "數(shù)學(xué)" THEN 分?jǐn)?shù) ELSE 0 END),"語(yǔ)文"=SUM(CASE 課程 WHEN "語(yǔ)文" THEN 分?jǐn)?shù) ELSE 0 END) ,"英語(yǔ)"=SUM(CASE 課程 WHEN "英語(yǔ)" THEN 分?jǐn)?shù) ELSE 0 END) FROM TB GROUP BY 姓名
求教:oracle數(shù)據(jù)庫(kù)中怎么樣能將一個(gè)縱表變成橫表?
一般行列轉(zhuǎn)置,有兩種做法 一種是case,但是由于case需要提前知道列數(shù),所以在很多情況下不能滿足 所以出現(xiàn)了動(dòng)態(tài)語(yǔ)句case,通過動(dòng)態(tài)SQL語(yǔ)句的組裝,實(shí)現(xiàn)了動(dòng)態(tài)的列的拼裝。但是語(yǔ)句復(fù)雜度很高 所以另一種方式就是靠程序轉(zhuǎn)置,使用一些Hash(JAVA)或Dictionary(C#)等一些對(duì)象,可以在程序中輕松地做出轉(zhuǎn)置,但是也有缺點(diǎn),缺點(diǎn)就是開銷大,原本只處理一次的數(shù)據(jù)(只在數(shù)據(jù)庫(kù)處理),現(xiàn)在需要處理兩次(數(shù)據(jù)庫(kù)一次,程序一次)
在sql里,如何將橫向數(shù)據(jù)改成縱向數(shù)據(jù)結(jié)構(gòu)?
如果這些數(shù)據(jù)表大小一致(橫向縱向所占單元格數(shù)量一樣),排列規(guī)律(間隔相同的列數(shù)),可以用vba代碼實(shí)現(xiàn)??梢栽囈幌?,如下代碼。Sub 橫變豎() Dim i As Long i = 1 For i = 1 To ActiveSheet.UsedRange.Columns.Count 12 1 Step 1 ActiveSheet.Range("A1:K23").Offset(0, i * 12).Select Selection.Cut ActiveSheet.Cells(i * 23 1, 1).Select ActiveSheet.Paste Next i End Sub