sqlite中文手冊 sql里面怎么把豎表變成橫表?
sql里面怎么把豎表變成橫表?SELECT 姓名,"數(shù)學"=MAX(CASE 課程 WHEN "數(shù)學" THEN 分數(shù) ELSE 0 END),"語文"=MAX(CASE 課程 WHEN "語文" T
sql里面怎么把豎表變成橫表?
SELECT 姓名,"數(shù)學"=MAX(CASE 課程 WHEN "數(shù)學" 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ù)學"=SUM(CASE 課程 WHEN "數(shù)學" 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 姓名
求教:oracle數(shù)據(jù)庫中怎么樣能將一個縱表變成橫表?
一般行列轉(zhuǎn)置,有兩種做法 一種是case,但是由于case需要提前知道列數(shù),所以在很多情況下不能滿足 所以出現(xiàn)了動態(tài)語句case,通過動態(tài)SQL語句的組裝,實現(xiàn)了動態(tài)的列的拼裝。但是語句復雜度很高 所以另一種方式就是靠程序轉(zhuǎn)置,使用一些Hash(JAVA)或Dictionary(C#)等一些對象,可以在程序中輕松地做出轉(zhuǎn)置,但是也有缺點,缺點就是開銷大,原本只處理一次的數(shù)據(jù)(只在數(shù)據(jù)庫處理),現(xiàn)在需要處理兩次(數(shù)據(jù)庫一次,程序一次)
在sql里,如何將橫向數(shù)據(jù)改成縱向數(shù)據(jù)結(jié)構(gòu)?
如果這些數(shù)據(jù)表大小一致(橫向縱向所占單元格數(shù)量一樣),排列規(guī)律(間隔相同的列數(shù)),可以用vba代碼實現(xiàn)??梢栽囈幌拢缦麓a。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