数据透视查询

时间:2019-05-19 13:51:49

标签: sql-server pivot

我有一个出勤表,其中包含studentid,atDate和status列,该表仅为缺席学生保存状态。没有身份的学生将被记录为出席。 我需要证明学生的出勤率。以下是我的查询,该查询已成功生成所选月份的出勤记录。问题是我无法在选定月份中动态生成天,因为每个月都有不同的天数。另外,我想将星期日的状态显示为“ S”

i >= 1

Here is my current output

“我的所需”输出,如果该值为空,则应将其替换为状态“ P”,如果某天为星期日,则应将其替换为状态“ S”,并且还应根据选定的日期月份生成天数。

1 个答案:

答案 0 :(得分:0)

我的想法是:

  • 找出月份的日期
  • 形成一个变量(@DaySelector)以选择列;这包括逻辑,其中星期日应该具有值“ P”
  • 使用PIVOT将上述变量应用于动态查询

下面是一个证明它的查询(tempdb)。我已将您的表假定为临时表“ #tblAttendance”。样本数据中有两个缺失:4月20日缺席的学生ID 1和15日缺席的学生ID 12:

const express = require('express');
const app = express();
const path = require('path');
app.use(express.static('./dist/'));
app.get('/*', function(req, res) {
  res.sendFile(path.join('./dist/index.html'));
});
app.listen(process.env.PORT || 8080);

注意:-为简便起见,我排除了您的条件“ fkClassID = 1”