看板 Database 關於我們 聯絡資訊
※ 引述《squallscer (羽毛)》之銘言: : 資料庫名稱: SQL server 2008 : 資料庫版本:R2 : 內容/問題描述: : 假設有三個欄位: : id col1 col2 : 1 A B : 2 B A : 3 C C : 4 A A : 5 B C : . . . : . . . : 希望產生一個列聯表為: : A B C : A 1 1 0 : B 1 0 1 : C 0 0 1 : 在google中搜尋contingency table都沒有找到答案 : 故來版上詢問前輩該怎麼寫呢? 列連表是統計的東西 資料庫把它叫做OLAP SQL:1999就有開始OLAP 可以用 group by rollup 或 group by cube 資料仍然是以資料表的方式呈現 例如 select semester as date, country, sum(sales) from sales group by cube(semester,country) 會給下面的表 Date Country Sales 1st semester Ireland 20 1st semester France 126 1st semester Germany 56 1st semester null 202 2nd semester Ireland 23 2nd semester France 138 2nd semester Germany 48 2nd semester null 209 null Ireland 43 null France 264 null Germany 104 null null 411 group by cube其實跟下面的查詢是一樣的 select semester as date, country, sum(sales) from sales group by semester, country UNION select null as date, country, sum(sales) from sales group by country UNION select semester as date, null as country, sum(sales) from sales group by country UNION select null as date, null as country, sum(sales) from sales 它的結果仍然不是pivot table, 這跟資料庫結構有關 很需要一個pivot table的話 比較方便的是建一個cube 你可以用Analysis service建 再用MDX查詢 就會給你一模一樣的pivot table -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 87.169.114.100 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1425575999.A.766.html