我有一个使用MS Visual Studio 2010 C#的学校项目。该项目是一个项目管理软件。基本上管理很多项目,根据您的工作班次给予员工津贴。我的项目共有4个表,它们是;
我想计算employee
的总津贴。例如。 EmployeeA
在3
个 Shift 上的项目A 上工作3
天。我该怎么做SQL?
更新: 我尝试了以下操作,它设法让EmployeeA工作日,但它显示了项目的配额。现在,如何从此代码中过滤出只有员工工作所显示的班次。
con = new SqlConnection(ConfigurationManager
.ConnectionStrings["projectshift"].ConnectionString);
da = new SqlDataAdapter(@"
SELECT
Shift.date,
Projects.AGeneral,
Projects.AMorning,
Projects.AEvening,
Projects.ANight
FROM Projects
INNER JOIN Shift ON Projects.ProjectId = Shift.ProjectId
WHERE Shift.EmployeeId='" + Session["CurrentUser"] + "'", con);
ds = new DataSet();
da.Fill(ds, "AssignProject");
GridView1.DataSource = ds;
GridView1.DataBind();
答案 0 :(得分:0)
首先我建议您使用参数化查询 - 这很容易受到SQL注入的攻击。</ p>
话虽如此,假设你使用的是SQL Server(未经测试),并假设你想要从shift.date开始的不同日期和天班工作的所有记录以及来自shift.date的所有记录的工作:
SELECT Count(DISTINCT CONVERT(varchar(10), Shift.Date, 111)) as DaysWorked,
COUNT(Shift.date) as ShiftsWorked,
Projects.AGeneral, Projects.AMorning, Projects.AEvening, Projects.ANight
FROM Projects
INNER JOIN Shift ON Projects.ProjectId = Shift.ProjectId
WHERE ...
GROUP BY Projects.AGeneral, Projects.AMorning, Projects.AEvening, Projects.ANight
祝你好运。