首页 > 解决方案 > 使用描述更新活动列

问题描述

我有两张桌子:

学生活动表:

ID  NAME    TIME_FROM   TIME_TO    ACTIVITY
-------------------------------------------
1   ABC      9:00        10:00     WALK
2   ABC      10:00       12:00     PLAY

GAMELOG table:

ID ACTIVITY_ID   STUDENT_NAME  CRICKET (HR)   FOOT BALL (HR)
------------------------------------------------------------------
 1    2            ABC              1               1

学生活动表包含学生主要活动,游戏日志表包含详细活动。例如:活动“PLAY”包括 CRICKET 和 FOOT BALL 作为活动的详细信息。

我需要一个查询来检索活动详细信息,如预期输出所示:

ID  NAME    ACTIVITY    DURATION HOURS  
----------------------------------------
1   ABC     WALKING          1  
2   ABC     CRICKET          1  
2   ABC     FOOTBALL         1

如果没有如上所示的 WALKING 的主要活动的详细活动,则查询应返回主要活动

假设游戏日志是根据记录的时间生成的。学生走了一个小时,玩了 2 小时 游戏详情被详细记录为板球 1 小时和足球 1 小时

比赛顺序应为 1. Cricket 和 2. FOOT BALL

简单来说,只要有 PLAY 列值,输出就应该显示 GameLog 表中的比赛详细信息以及 CRICKET 和 FOOT BALL TIME。

标签: sql-server

解决方案


我试过没有实际创建表..希望它有所帮助。

SELECT 
    S.ID
    ,S.Name
    ,CASE 
        WHEN S.Activity = 'WALK' THEN 'Walking'
        WHEN A.Cricket = 1 AND S.Activity = 'Play' THEN 'Cricket'
        WHEN A.Football = 1 AND S.Activity = 'Play' THEN 'Football'
    END CASE AS Activity
FROM 
    Student_Activity SA 
    JOIN GameLog G ON SA.Name = G.Student_Name

推荐阅读