我想根據這個特定的列結果從表列中添加/創建三列。這是我在 tblexammarks 中的記錄:
SELECT exm.ID,
exm.Admission_No,
exm.Subject AS 'SID',
sb.Name AS 'Subject Name',
exm.Term,
exm.Test,
exm.Marks
FROM tblexammarks exm
INNER JOIN tblsubjects sb ON exm.Subject=sb.ID
ORDER BY exm.ID ASC;
輸出:
| ID | 錄取_沒有 | SID | 主題名稱 | 學期 | 測驗 | 分數 |
|---|---|---|---|---|---|---|
| 1 | KBA-2022-003 | 6 | 科學 | 第一學期 | 測驗一 | 94 |
| 2 | KBA-2022-003 | 6 | 科學 | 第一學期 | 測驗二 | 88 |
| 3 | KBA-2022-003 | 6 | 科學 | 第一學期 | 測驗三 | 78 |
這是我想要實作的目標:
| 錄取_沒有 | SID | 主題名稱 | 學期 | 測驗一 | 測驗二 | 測驗三 | 總分 |
|---|---|---|---|---|---|---|---|
| KBA-2022-003 | 6 | 科學 | 第一學期 | 94 | 88 | 78 | 260 |
我嘗試過的和輸出:
SELECT exm.ID,
exm.Admission_No,
exm.Subject AS 'SID',
sb.Name AS 'Subject Name',
exm.Term,
if(Test='Test One', marks, 0) AS 'Test One',
if(Test='Test Two', marks, 0) AS 'Test Two',
if(Test='Test Three', marks, 0) AS 'Test Three'
FROM tblexammarks exm
INNER JOIN tblsubjects sb ON exm.Subject=sb.ID;
| ID | 錄取_沒有 | SID | 主題名稱 | 學期 | 測驗一 | 測驗二 | 測驗三 |
|---|---|---|---|---|---|---|---|
| 1 | KBA-2022-003 | 6 | 科學 | 第一學期 | 94 | 0 | 0 |
| 2 | KBA-2022-003 | 6 | 科學 | 第一學期 | 0 | 88 | 0 |
| 3 | KBA-2022-003 | 6 | 科學 | 第一學期 | 0 | 0 | 78 |
我試過使用 MySQL IF 函式,但我迷路了。有人可以幫忙嗎。
uj5u.com熱心網友回復:
您可以嘗試使用條件陳述句IF并為三個Test欄位中的每一個提取單個值,然后使用MAX聚合函式洗掉空值并SUM獲取Marks欄位的總數,然后聚合其余選定欄位使用該GROUP BY子句。
SELECT exm.Admission_No,
exm.Subject AS SID,
sb.Name AS Subject_Name,
exm.Term,
MAX(IF(exm.Test = 'Test One' , 'Test One' , NULL)) AS Test_One,
MAX(IF(exm.Test = 'Test Two' , 'Test Two' , NULL)) AS Test_Two,
MAX(IF(exm.Test = 'Test Three', 'Test Three', NULL)) AS Test_Three,
SUM(exm.Marks) AS Marks
FROM tblexammarks exm
INNER JOIN tblsubjects sb
ON exm.Subject = sb.ID
GROUP BY exm.Admission_No,
exm.Subject AS 'SID',
sb.Name AS 'Subject Name',
exm.Term
ORDER BY exm.ID ASC;
如果您可以提供這兩個表中的示例資料,我可以提供一個經過全面測驗的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/486193.html
上一篇:獲取沒有孩子的父母行
