C# 计算两个日期之间的行数
在我的数据库中,我有一个名为C# 计算两个日期之间的行数,c#,javascript,jquery,sql,C#,Javascript,Jquery,Sql,在我的数据库中,我有一个名为IsStaff的列名,它的返回值是位。因此,公司的员工可能生病(1)或没有生病(0)。如何编写一个sql查询来计算特定日期之间1和0的所有数字,并将其表示在jquery表中。这就是我所做的: public List<Staff> Method(string Date1, string Date2) { DateTime d = Convert.ToDateTime(Date1); string date1 = d.
IsStaff
的列名,它的返回值是位。因此,公司的员工可能生病(1)或没有生病(0)。如何编写一个sql查询来计算特定日期之间1和0的所有数字,并将其表示在jquery表中。这就是我所做的:
public List<Staff> Method(string Date1, string Date2)
{
DateTime d = Convert.ToDateTime(Date1);
string date1 = d.ToLongDateString();
DateTime dd = Convert.ToDateTime(Date2);
string date2 = dd.ToLongDateString();
List<Staff> LBD = new List<Staff>();
SqlConnection conn = new SqlConnection etc...
SqlCommand command = new SqlCommand(@"SELECT * From TableName
WHERE Cast([Time] AS DATE) > @Time
AND CAST([Time] AS DATE) < @Time2
ORDER BY Time Desc", conn);
command.Parameters.AddWithValue("@Time", date1);
command.Parameters.AddWithValue("@Time2", date2);
conn.Open();
SqlDatadata data = command.Executedata();
while (data.Read())
{
Staff l = new Staff();
l.IsStaff = data["IsStaff"].ToString();
l.Name = data["Name"].ToString();
........
LBD.Add(l);
}
conn.Close();
return LBD;
}
公共列表方法(字符串Date1、字符串Date2)
{
DateTime d=Convert.ToDateTime(Date1);
string date1=d.ToLongDateString();
DateTime dd=Convert.ToDateTime(日期2);
string date2=dd.ToLongDateString();
List LBD=新列表();
SqlConnection conn=新的SqlConnection等。。。
SqlCommand=newsqlcommand(@“从表名中选择*)
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按时间顺序描述(康涅狄格州);
command.Parameters.AddWithValue(“@Time”,date1);
command.Parameters.AddWithValue(“@Time2”,date2);
conn.Open();
SqlDatadata=command.Executedata();
while(data.Read())
{
职员l=新职员();
l、 IsStaff=数据[“IsStaff”].ToString();
l、 名称=数据[“名称”]。ToString();
........
LBD.添加(l);
}
康涅狄格州关闭();
返回LBD;
}
我可以成功获取两个日期之间的数据,但如何获取特定员工生病的总时间
功能表(数据){
var表=‘生病员工的姓名’和‘无生病员工的姓名’;
var-rowID=0;
用于(数据中的var人员){
var row='为什么不计算SQL中的值
SqlCommand command = new SqlCommand(@"SELECT StaffID, Name, sum(IsStaff),
sum(case when IsStaff = 1 then 0 else 1 end)
From TableName
WHERE Cast([Time] AS DATE) > @Time
AND CAST([Time] AS DATE) < @Time2
GROUP BY StaffID, Name
ORDER BY Time Desc", conn);
SqlCommand=newsqlcommand(@“选择StaffID、Name、sum(IsStaff)),
总和(IsStaff=1时为0,否则为1结束)
从表名
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按标记、名称分组
按时间顺序描述(康涅狄格州);
或者使用Linq获取从员工列表中计算出的值。计算特定日期使用之间的所有1和0的数量:
SELECT StaffID, count(IsStaff) From TableName
WHERE Cast([Time] AS DATE) > @Time
AND CAST([Time] AS DATE) < @Time2
GROUP BY StaffID
ORDER BY count(IsStaff) desc
从TableName中选择StaffID、count(IsStaff)
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按斯塔夫分组
按计数排序(IsStaff)说明
要获取特定员工生病的总时间,请使用:
SELECT StaffID, sum(IsStaff) From TableName
WHERE Cast([Time] AS DATE) > @Time
AND CAST([Time] AS DATE) < @Time2
GROUP BY StaffID
ORDER BY sum(IsStaff) desc
从TableName中选择StaffID,sum(IsStaff)
演员位置([时间]为日期)>@Time
和演员([时间]作为日期)<@Time2
按斯塔夫分组
按总和排序(IsStaff)说明
我们需要更多关于您的架构和所需输出的详细信息来帮助您。我将如何使用sql进行计算?我已更改了sql。请查看我的答案。我是否可以说select*,因为将来如果我想向我的表中添加更多字段,那么我可以这样做?在这种情况下,我会从tableName、sum()中选择select*..?否,因为select中的所有字段都必须在group by子句中。然后,您应该在开始时决定select的字段。第二个答案显示在sql server管理中执行时出现错误。操作数数据类型位对于sum运算符无效。
SELECT StaffID, sum(IsStaff) From TableName
WHERE Cast([Time] AS DATE) > @Time
AND CAST([Time] AS DATE) < @Time2
GROUP BY StaffID
ORDER BY sum(IsStaff) desc