表结构:日期,学生姓名,是否签到。
签到的学生加一条记录。
现在想查询的结果是:把昨天是否签到加到今天的查询结果集里,用1 或0,表示。
怎样用一条select语句实现,要考虑数据量很大??
大概结果样式是这样
字段: 时间 学生 是否签到 昨日签到
1.30 小李 是 1
1.30 小王 是 0
从流程上用了一个无关Sql语句的方式解决了,谢谢各位
left join 自身
请大神说详细说说吗?真得快愁死我了
行转列,case 日期 when 今天 then 0,case 日期 when 昨天 then 1
通过一个子查询然后join连接即可
SELECT r.日期,r.学生姓名,r.是否签到, tmp.昨日签到 FROM Record r LEFT JOIN
(
SELECT 学生姓名, CASE WHEN 是否签到='是' THEN 1 ELSE 0 END AS '昨日签到'
WHERE 日期=CONVERT(VARCHAR(10),DATEADD(dd,-1,GETDATE()),120)
)tmp
ON r.学生姓名=tmp.学生姓名