[英]combining values from two sql query result rows into one for a datagrid in c#
我有一个雇员表,其中包含雇员信息,以及联系方式表,其中包含雇员的电话号码。 员工有两个以上的电话号码。
现在,要显示员工信息,我有一个数据网格。 我想做的是在数据网格中显示前两个数字以及员工信息。
我使用以下方法填充数据网格
public static void SignUpControllerDay(DateTime Date, System.Windows.Forms.DataGridView PassedGrid)
{
string sql_SignUp = String.Format(@"SELECT e.Emp_ID as Emp_ID,
e.First_Name+ ' ' +e.Last_Name as Name,
sum(o.Quantity) as Sum
FROM Employee e,OT_hours o,Position p,Signup_Sheet s
WHERE e.Emp_ID=o.Emp_ID
and e.Emp_ID = s.Employee_ID
and s.Day_Shift = 1
and e.Position_ID = p.Position_ID
and p.Position_Name = 'Controller'
and o.Quantity NOT IN(0.3)
and s.Date = '{0}'
and o.Date <= CONVERT(VARCHAR,'{0}',101) AND o.Date > CONVERT(VARCHAR,DATEADD(YYYY,-1,'{0}'),101)
GROUP BY e.Emp_ID,e.First_Name+' '+e.Last_Name,p.Position_Name
ORDER BY Sum", Date);
SqlConnection sqlConn = null;
SqlCommand cmd_SignUp;
SqlDataReader dr_SignUp;
try
{
sqlConn = new SqlConnection(databaseConnectionString);
sqlConn.Open();
cmd_SignUp = new SqlCommand(sql_SignUp, sqlConn);
dr_SignUp = cmd_SignUp.ExecuteReader();
while (dr_SignUp.Read())
{
PassedGrid.Rows.Add(dr_SignUp["Emp_ID"].ToString(), dr_SignUp["Name"].ToString(), dr_SignUp["Sum"].ToString());
}
}
catch (Exception e)
{
MessageBox.Show("Error found in SignUpControllerDay..." + Environment.NewLine + e.ToString());
}
finally
{
if (sqlConn != null)
{
sqlConn.Close();
}
}
}
上面的方法显示员工的Empid,名称和总数。 我要做的就是显示contact_details表中的任意两个电话号码。 我尝试使用数据读取器根据员工ID获取电话号码,但是没有用。
请帮忙....
我想我知道reggie想要做什么,但是在我给您任何帮助之前,reggie让我们看一下您可能要看的几件事:
PIVOT
关键字,请在BOL中进行查找 关于您的问题,如果您使用的是SQL Server 2005+,则可以使用PIVOT。 鉴于您提到的可以有2个联系电话,我们假设一个是工作,一个是家。
您可以这样做:
SELECT
FullName,
[Work],
[Home]
FROM
(SELECT
l.FullName,
p.PhoneType,
p.PhoneNumber
FROM
Login l
INNER JOIN
Phone p
ON p.LoginID = l.LoginID) ps
PIVOT
(
MAX(ps.PhoneNumber)
FOR
ps.PhoneType IN ([Home], [Work])
) AS pvt
登录只是您的雇员表,电话是您的联系表,其中包含电话号码。 我假设可以在联系人表中找到员工ID(即Login.LoginID = Phone.LoginID),或者在您的情况下为Employee.EmpID = Contacts.EmpID。
所以这:
替代文字http://img513.imageshack.us/img513/6126/onetime.jpg
对于不使用数据透视的标准查询,则变为:...:
替代文字http://img513.imageshack.us/img513/7395/2time.jpg
使用枢轴时。
您不会在SQL中的任何地方引用contact_details表。 您需要加入Employee和contact_details表以包括电话号码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.