id相同名称不同多条数据,名字进行累加

           

aspx.cs

dataset dst=得到查询所有的信息

//判断订单号
            List<string> listTid = new List<string>();
            foreach (DataRow row in dst.Tables[0].Rows)
            {

//判断是否有重复的id


                if (false == listTid.Contains(row["TOrderId"].ToString()))
                {
                    listTid.Add(row["TOrderId"].ToString());
                }
            }

//创建一个datatable
            DataTable dt = new DataTable();
            dt.Columns.Add("TOrderId");
            dt.Columns.Add("PassengerName");
            dt.Columns.Add("DepartureTime");
            dt.Columns.Add("DepartureAirport");
            dt.Columns.Add("DestinationAirport");
            dt.Columns.Add("FlightNO");
            dt.Columns.Add("UserName");
            dt.Columns.Add("PriceDue");
            dt.Columns.Add("Status");
            foreach (string str in listTid)
            {
                DataRow[] r = dst.Tables[0].Select("TOrderId='" + str + "'");
                DataRow dtrow = dt.NewRow();
                dtrow["TOrderId"] = str;
                string DepartureTime = string.Empty;
                string DepartureAirport = string.Empty;
                string FlightNO = string.Empty;
                string DestinationAirport = string.Empty;
                string strPname = string.Empty;
                string UserName = string.Empty;
                string PriceDue = string.Empty;
                string Status = string.Empty;
                //乘机人累加
                    for (int i = 0; i < r.Length; i++)
                    {
                        //一个订单可能同一个人订二份,显示一个人
                        if (strPname.Contains(r[i]["PassengerName"].ToString()))
                        {
                            strPname = r[i]["PassengerName"].ToString();
                        }
                        else
                        {
                            strPname += r[i]["PassengerName"].ToString() + ",";
                        }
                        DepartureTime = r[i]["DepartureTime"].ToString();
                        DepartureAirport = r[i]["DepartureAirport"].ToString();
                        DestinationAirport = r[i]["DestinationAirport"].ToString();
                        FlightNO = r[i]["FlightNO"].ToString();
                        UserName = r[i]["UserName"].ToString();
                        PriceDue = r[i]["PriceDue"].ToString();
                        Status = r[i]["Status"].ToString();
                    }
                    if (strPname.Contains(','))
                    {
                        strPname = strPname.Substring(0, strPname.Length - 1);
                    }
                dtrow["PassengerName"] = strPname;
                dtrow["DepartureTime"] = DepartureTime;
                dtrow["DestinationAirport"] = DestinationAirport;
                dtrow["DepartureAirport"] = DepartureAirport;
                dtrow["FlightNO"] = FlightNO;
                dtrow["UserName"] = UserName;
                dtrow["PriceDue"] = string.Format("{0:f2}", Convert.ToDecimal(PriceDue));
                dtrow["Status"] = Status;
                dt.Rows.Add(dtrow);
            }

### 多表合并后进行求和操作 在处理多表数据并对其进行合并以及后续的求和操作时,可以采用多种方式来完成这一目标。以下是基于SQL语句和Pandas库两种常见场景下的解决方案。 #### 使用SQL实现多表合并后的求和 当涉及多个表之间的关联与汇总时,可以通过`JOIN`语法将这些表连接起来,并利用聚合函数如`SUM()`来进行数值统计。具体而言: 对于给定的情况——即存在三个表(A作为源操作表;B、C为目标操作表),并且各表间共享至少一个共同字段(假设此关键字段名为`KeyField`)。为了从B和C中提取匹配记录并将结果更新至A内的指定列,可构建如下形式的查询语句[^2]: ```sql UPDATE A SET SumColumn = ( SELECT COALESCE(SUM(B.Value), 0) + COALESCE(SUM(C.Value), 0) FROM B LEFT JOIN C ON B.KeyField = C.KeyField AND B.OtherCondition = C.OtherCondition -- 如果有额外条件则加入这里 WHERE A.KeyField = B.KeyField OR (A.KeyField IS NOT NULL AND B.KeyField IS NULL)) WHERE EXISTS( SELECT 1 FROM B, C WHERE (A.KeyField = B.KeyField OR A.KeyField = C.KeyField)); ``` 上述脚本解释了如何依据键值关系同步获取来自两张子表的数据总和再反馈到主表相应位置的过程。值得注意的是,这里的逻辑假定了所有参与运算的关系型数据库支持标准ANSI SQL特性。如果实际环境中使用的DBMS有所差异,则需适当调整语法结构以适配特定平台的要求。 #### 利用Python中的Pandas库达成相同效果 另一种高效途径就是借助编程语言及其扩展包的力量简化流程复杂度的同时提升灵活性。比如,在Python生态系统里广受欢迎的数据科学工具集—Pandas提供了丰富的API接口帮助我们轻松应对这类挑战: 首先加载必要的依赖模块并准备初始输入材料: ```python import pandas as pd # 创建示例DataFrame对象代表三张原始表格 df_A = pd.DataFrame({'ID': [1, 2], 'TargetSum': [None]*2}) df_B = pd.DataFrame({'ID': [1, 3], 'Value': [10, 40]}) df_C = pd.DataFrame({'ID': [1, 4], 'Value': [15, 50]}) ``` 接着定义辅助函数负责执行核心业务逻辑: ```python def merge_and_sum(df_main, df_aux_list, key_col='ID', value_col='Value'): """ 对于传入的主要DataFrame与其他若干辅助DataFrame, 根据设定的关键字列名找到对应条目累加其数值属性返回新的Series实例。 参数: df_main(DataFrame): 主要的工作区存储最终输出成果. df_aux_list(list of DataFrame): 需要被遍历并与前者做交集判断的一系列补充资料集合. key_col(str): 表征唯一性的索引标志名称,默认为'ID'. value_col(str): 待收集合计金额所在的位置标签,默认设作'Value'. 返回: Series: 包含按行排列的新生成总计数列表向量。 """ merged_df = None for aux_df in df_aux_list: temp_merge = pd.merge(df_main[[key_col]], aux_df, on=key_col, how="left")[value_col].fillna(0) if isinstance(merged_df, type(None)): merged_df = temp_merge.copy() else: merged_df += temp_merge return merged_df.astype(int) result_series = merge_and_sum(df_A, [df_B, df_C]) print(result_series) ``` 最后一步便是把得到的结果重新注入回原始框架之中覆盖原有空白区域即可完成整个闭环操作链条[^1]: ```python df_A['TargetSum'] = result_series.values print(df_A) ``` 以上展示了通过编写自定义算法解决跨域协作难题的具体实践案例说明文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值