我使用gridview构建了一个考勤表,用于存储员工在数据库中的出勤情况。我的出勤表就像这样
tblattendance
Att_ID Emp_ID Emp_name Date Att_status
1 002 xyz 25/05/2016 Absent
2 002 xyz 26/05/2016 Present
现在我想要做的是,我希望在gridview中获取出勤记录,以便显示特定日期到特定日期的某个员工的缺勤和礼物总数。到目前为止,我已经完成了以下代码,但它显示了一行中的缺席和某个员工的第二行中的礼物。我希望它显示在同一行。我还没写过Date的Where条件。
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT Emp_ID, Emp_name, COUNT(Att_status) AS Astatus FROM tblattendance WHERE Att_status='Absent' AND Emp_ID='2' GROUP BY Emp_ID, Emp_name, Att_status",conn);
DataTable dt = new DataTable();
da.Fill(dt);
SqlDataAdapter da1 = new SqlDataAdapter();
da1.SelectCommand = new SqlCommand("SELECT COUNT(Att_status) AS Pstatus FROM tblattendance WHERE Att_status='Present' AND Emp_ID='2' GROUP BY Att_status",conn);
da1.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
在页面加载中完成。
答案 0 :(得分:0)
假设您的观点是这样的
Emp_Id Emp_name Dates Absent Present
使用以下SQL填充您的视图
select emp_id, emp_name, 'from - to dates' as dates,
sum(case when Att_status = 'Absent' then 1 else 0 end) as [Absent],
sum(case when Att_status = 'Present' then 1 else 0 end) as [Present]
from [dbo].[tblattendance]
where [date] >= CONVERT(date, '05/25/2016') and [date] <= convert(date, '05/27/2016')
group by emp_id, emp_name
将 - 替换为 - 日期&#39; string by required string,并在where子句中放置日期的下限和上限。我在表格中插入了3条记录,这就是为什么我的上限为05/27/2016。