C# n变成这个…:
C# n变成这个…:,c#,sql,pivot-table,C#,Sql,Pivot Table,使用pivot时。不要像那样使用string.Format()插入参数。还有什么不起作用?你有什么错误吗?你做了什么来尝试你的方法?更多的信息会很好!我有一个包含以下列的数据网格“empid、name、sum、phone1、phone2”,因为电话号码位于不同的表中,我不知道如何在数据网格中获取它们。当我引用带有phone num、ber表的employee表时,结果集中会出现重复的值。唯一的问题是,如何在数据网格中显示员工的前两个电话号码在SQL中重新标记。希望这能得到它真正需要的关注。对于S
使用pivot时。不要像那样使用string.Format()插入参数。还有什么不起作用?你有什么错误吗?你做了什么来尝试你的方法?更多的信息会很好!我有一个包含以下列的数据网格“empid、name、sum、phone1、phone2”,因为电话号码位于不同的表中,我不知道如何在数据网格中获取它们。当我引用带有phone num、ber表的employee表时,结果集中会出现重复的值。唯一的问题是,如何在数据网格中显示员工的前两个电话号码在SQL中重新标记。希望这能得到它真正需要的关注。对于SQL专家来说,这不是一个C#问题。我添加了pivot表作为标记,因为它实际上就是这样。不要像那样使用string.Format()插入参数。还有什么不起作用?你有什么错误吗?你做了什么来尝试你的方法?更多的信息会很好!我有一个包含以下列的数据网格“empid、name、sum、phone1、phone2”,因为电话号码位于不同的表中,我不知道如何在数据网格中获取它们。当我引用带有phone num、ber表的employee表时,结果集中会出现重复的值。唯一的问题是,如何在数据网格中显示员工的前两个电话号码在SQL中重新标记。希望这能得到它真正需要的关注。对于SQL专家来说,这不是一个C#问题。我添加了pivot表作为标记,因为这才是真正的问题。我同意你的看法。我参考了联系表,这就是我得到的。2222222 reggie dsouza 2.4 647 878 6565 22222 reggie dsouza 2.4 778 242 2125 65456 Adam Long 4.9 222 233 5789 65456 Adam Long 4.9 989 897 3456即使根据员工分组,我也得到了这个结果。因此,它给出了重复的值。与中一样,员工信息根据编号重复。我想以“empid,name,toal,phone 1,phone 2”的格式显示数据网格中的信息。任何建议,现在我明白你的要求了。这很棘手,我的直觉是,您需要使用存储过程以编程方式获得所需的结果。我已将其重新标记为SQL,这是问题的本质,我建议编辑您的问题,以便更清楚地表明您希望在一个结果中获得两个电话号码。@Adam。reggie-使用PIVOT,请参见下面我的回答。一名员工,两个电话号码,返回一行,列出两个号码,没有任何循环或任何接口代码。现在,在他的C#app中,他所需要做的就是将数据集中的数据打包并返回到datagrid。我同意你的看法。我参考了联系表,这就是我得到的。2222222 reggie dsouza 2.4 647 878 6565 22222 reggie dsouza 2.4 778 242 2125 65456 Adam Long 4.9 222 233 5789 65456 Adam Long 4.9 989 897 3456即使根据员工分组,我也得到了这个结果。因此,它给出了重复的值。与中一样,员工信息根据编号重复。我想以“empid,name,toal,phone 1,phone 2”的格式显示数据网格中的信息。任何建议,现在我明白你的要求了。这很棘手,我的直觉是,您需要使用存储过程以编程方式获得所需的结果。我已将其重新标记为SQL,这是问题的本质,我建议编辑您的问题,以便更清楚地表明您希望在一个结果中获得两个电话号码。@Adam。reggie-使用PIVOT,请参见下面我的回答。一名员工,两个电话号码,返回一行,列出两个号码,没有任何循环或任何接口代码。现在,在他的C#应用程序中,他所需要做的就是将数据集中的数据打包并返回到datagrid。将对象设置为null不是一个好的做法。这是COM时代的遗留问题,在极少数情况下在.Net中实际上是有害的。@Joel Coehoorn-我不同意您的看法,在这种情况下,与sql的连接已关闭,最好将其设置为null/nothing,因为它不再可以使用。我知道总司令会处理的。我希望您能告诉我为什么不是这样。将对象设置为null不是一个好的做法。这是COM时代的遗留问题,在极少数情况下在.Net中实际上是有害的。@Joel Coehoorn-我不同意您的看法,在这种情况下,与sql的连接已关闭,最好将其设置为null/nothing,因为它不再可以使用。我知道总司令会处理的。我希望你能告诉我为什么不是这样。
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();
}
}
}
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