[SQL]將表格橫向呈現

這是最近遇到的問題,想要將原本一直直往下列的縱向表格以橫向的方式顯示出來,在網路上查了一寫方法,現在寫下來做個筆記,順便把完成的方式做個分解步驟,因為直接看SQL可能會比較難明白,首先這是原始的表格

學號(id_num) 科目(subject) 成績(score)
101001 國文 85
101001 數學 70
101001 英文 80
101002 國文 73
101002 英文 89
101002 數學 68
101003 國文 70
101003 英文 68
101003 數學 88

希望能夠轉換成這樣的方式呈現

學號(id) 國文成績 英文成績 數學成績
101001 85 80 70
101002 73 89 68
101003 70 68 88

接下來就是拆解動作啦

[SQL Server]DISTINCT與ORDER BY同時出現時產生錯誤「如果已指定 SELECT DISTINCT,則 ORDER BY 項目必須顯示於選取清單中。」

我覺得這是一個滿怪的問題,簡單來說就是SELECT語法有DISTINCT時, ORDER BY一定要有明確的欄位,不過我需要的排序比較麻煩,結果就出錯了,出錯的語法像這樣

像這種比較詭異的排序規則,就會跳出錯誤,解法有2種

[SQL][SQL Server]自動補足空白列數

這是在做Reporting Service報表時遇到的問題,每頁要顯示60筆資料
不足60筆的時候必須補足空白資料行,也就是說如果只有58筆資料,就必須印2行空白列
同理如果有110筆資料,第一頁印滿60筆後,第二頁只有50筆,就要在印10行空白列

在網路上找了很久,就是找不到我要的答案,只好自己東湊西湊,總算是湊出來了
方法是用UNION ALL連接多個空行,讓資料行數補足成為60的倍數,至於差幾行可以補滿60倍數是用餘除的方法
語法大致如下,以下語法適用SQL SERVER

文章分類

全部展開 | 全部收合