Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier

后端 未结 4 881
傲寒
傲寒 2021-01-13 08:38
DataTable distinctTable = dTable.DefaultView.ToTable(true,\"ITEM_NO\",\"ITEM_STOCK\");
DataTable dtSummerized = new DataTable(\"SummerizedResult\");

dtSummerized.Co         


        
4条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-13 09:14

    You want to write:

    dTable.Compute("sum(CONVERT(ITEM_STOCK, 'System.Double'))",
                   "ITEM_NO='" + dRow["ITEM_NO"].ToString() + "'")
    

    instead of:

    dTable.Compute("sum(" + TotalItem + ")", "ITEM_NO="...
    

    because it will translate to dTable.Compute("sum(value_of_TotalItem), "ITEM_NO="..., value_of_TotalItem is a double and is not a column name.

    See DataTable.Compute

    UPDATE:

    try this:

    DataTable distinctTable = dTable.Clone();
    dTable.Columns.Add("ITEM_STOCK_D", typeof(Decimal),
                       "CONVERT(ITEM_STOCK, 'System.Decimal')");
    foreach (DataRow dRow in dTable.Rows)
    {
        String itemNo = dRow["ITEM_NO"].ToString();
        if(distinctTable.Select(String.Format("ITEM_NO = '{0}'",itemNo)).Length == 0)
        {
            double totalStock = Convert.ToDouble(dTable.Compute("SUM(ITEM_STOCK_D)",
                                         String.Format("ITEM_NO = '{0}'", itemNo))); 
            distinctTable.Rows.Add(itemNo, totalStock.ToString());
        }
    }
    dTable.Columns.Remove("ITEM_STOCK_D");
    

提交回复
热议问题