admin

MySQL选择资格到期日期

sql

我有三个MySql表:

用户 :UserId,UserName

测试 :TestId,TestName

通过 :PassId,UserId,TestId,DateTaken

我想返回一个表格,显示每个用户通过的最新测试的日期,例如

|--------|---------|---------|---------|---------|---------|
|User    |Test A   |Test B   |Test C   |Test D   |Test E   |
|--------|---------|---------|---------|---------|---------|
|James   |Null     |6/3/11   |Null     |Null     |4/3/11   |
|Mark    |Null     |1/4/11   |8/5/11   |23/5/10  |Null     |
|--------|---------|---------|---------|---------|---------|

在此示例中,James从未通过测验A,C或D。他可能参加了测验B几次,但最新一次是在11/6/3。

我计划在ASP.NET GridView中显示此数据。最好的方法是什么-可以在SELECT语句中完成吗?请帮忙!

提前谢谢了。


阅读 174

收藏
2021-07-01

共1个答案

admin

select
u.username,
max(case when testid = 1 then datetaken else null end) as A,
max(case when testid = 2 then datetaken else null end) as B,
max(case when testid = 3 then datetaken else null end) as C,
max(case when testid = 4 then datetaken else null end) as D,
max(case when testid = 5 then datetaken else null end) as E
from users as u
left join passes as p on u.userid = p.userid
group by u.userid
2021-07-01