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