2017-06-06 45 views
0

我寫這個查詢尋找從2代表的最高得分(選定條目:StudentIdScore):從(StudentNameStudentImage,...),現在我想選擇一些其他數據必須使用StudentId多個查詢,其中

我的查詢將返回篩選項目的其他表:

StudentId  HighScoreUser 
-1    250 
-2    100 
-3    90 
-4    80 
-5    40 

對於顯示網格數據,我需要的學生姓名,...所以我必須用StudentId以查找的信息特定用戶:

CREATE PROCEDURE SelectTopYear 
AS 
    SELECT TOP 5 StudentId, ISNULL(SUM(Score),0) As HighScoreUser 
FROM (SELECT StudentId, Score FROM tbl_ActPoint 
     UNION ALL 
     SELECT StudentId, Score FROM tbl_EvaPoint 
    ) as T 
GROUP BY StudentId ORDER BY HighScoreUser DESC 
RETURN 0 
+2

什麼其他的表? –

+0

內部連接到包含學生姓名的表... – scsimon

+0

'現在我想選擇其他一些數據:(StudentName,StudentImage,...'=>如果這些值與個人student_id相同,則將其用於組中另外還要決定每個學生ID需要哪個列值並執行這些列的聚合函數,在這種情況下,給出一些示例數據,其中包含所有必需的列和您期望的輸出 – Utsav

回答

1

可以使用CTE(或子查詢)和JOIN

WITH s as (
     SELECT TOP 5 StudentId, ISNULL(SUM(Score),0) As HighScoreUser 
     FROM (SELECT StudentId, Score FROM tbl_ActPoint 
      UNION ALL 
      SELECT StudentId, Score FROM tbl_EvaPoint 
      ) s 
     GROUP BY StudentId 
     ORDER BY HighScoreUser DESC 
    ) 
SELECT . . . 
FROM s JOIN 
    othertable ot 
    ON s.StudentId = ot.StudentId; 

填寫相應的列名和表名。

+0

正是我想要的.tnx完美地工作 –