当前位置: 首页 > news >正文

DB2数据库用 With语句分隔字符

SELECT T1.REPAIRNO,
       T1.UNDERTAKER10,
       T3.FULLNAME          AS RECEIVERNAME,
       T1.WALKDISTANCE,
       T1.STATUSCODEDATE10  AS RECEIVETIME,
       t8.REPAIRTYPE,
       T5.DELIVEREDDATE,
       CASE 
            WHEN T2.REPAIRNO IS NULL THEN ''
            ELSE ''
       END                     ISINSURANCE,
       T2.FIXEDDATE,
       T4.FULLNAME          AS CLAIMSNNAME,
       T2.TotalFee
FROM   RT_REPAIR T1
       LEFT JOIN RT_INSURANCECLAIMS T2
            ON  T1.REPAIRNO = T2.REPAIRNO
            AND T1.FRAMENO = T2.FRAMENO
       LEFT JOIN CM_STAFF T3
            ON  T1.UNDERTAKER10 = T3.STAFFPKID
       LEFT JOIN CM_STAFF T4
            ON  T2.ClaimsID = T4.STAFFPKID
       LEFT JOIN RT_REPAIRPROCESS T5
            ON  T1.REPAIRNO = T5.REPAIRNO
       LEFT JOIN RT_CUSTOMERWISH T6
            ON  T1.REPAIRNO = T6.REPAIRNO
       LEFT JOIN RT_WORKCONTENT T7
            ON  T6.REPAIRNO = T7.REPAIRNO
            AND T6.WISHID = T7.WISHID
       LEFT JOIN RM_RepairType t8
            ON  t7.RepairTypeCode = t8.repairtypecode
WHERE  T1.FRAMENO = 'LHGRB186982000004'
       AND STATUSCODE = '99'
ORDER BY
       REPAIRNO                DESC   

 

     public DataSet GetCustomerSolicitRepairHisByFrameNo(string aFrameNo)
        {
            StringBuilder sql = new StringBuilder();
            sql.Append(" SELECT T1.REPAIRNO, ");
            sql.Append(" T1.UNDERTAKER10, ");
            sql.Append(" T3.FULLNAME          AS RECEIVERNAME, ");
            sql.Append(" T1.WALKDISTANCE, ");
            sql.Append(" T1.STATUSCODEDATE10  AS RECEIVETIME, ");
            sql.Append(" T8.REPAIRTYPE, ");
            sql.Append(" T5.DELIVEREDDATE, ");
            sql.Append(" CASE  ");
            sql.Append(" WHEN T2.REPAIRNO IS NULL THEN '否' ");
            sql.Append(" ELSE '是' ");
            sql.Append(" END                     ISINSURANCE, ");
            sql.Append(" T2.FIXEDDATE, ");
            sql.Append(" T4.FULLNAME          AS CLAIMSNNAME, ");
            sql.Append(" T2.TOTALFEE ");
            sql.Append(" FROM   RT_REPAIR T1 ");
            sql.Append(" LEFT JOIN RT_INSURANCECLAIMS T2 ");
            sql.Append(" ON  T1.REPAIRNO = T2.REPAIRNO ");
            sql.Append(" AND T1.FRAMENO = T2.FRAMENO ");
            sql.Append(" LEFT JOIN CM_STAFF T3 ");
            sql.Append(" ON  T1.UNDERTAKER10 = T3.STAFFPKID ");
            sql.Append(" LEFT JOIN CM_STAFF T4 ");
            sql.Append(" ON  T2.ClaimsID = T4.STAFFPKID ");
            sql.Append(" LEFT JOIN RT_REPAIRPROCESS T5 ");
            sql.Append(" ON  T1.REPAIRNO = T5.REPAIRNO ");
            sql.Append(" LEFT JOIN RT_CUSTOMERWISH T6 ");
            sql.Append(" ON  T1.REPAIRNO = T6.REPAIRNO ");
            sql.Append(" LEFT JOIN RT_WORKCONTENT T7 ");
            sql.Append(" ON  T6.REPAIRNO = T7.REPAIRNO ");
            sql.Append(" AND T6.WISHID = T7.WISHID ");
            sql.Append(" LEFT JOIN RM_REPAIRTYPE T8 ");
            sql.Append(" ON  T7.REPAIRTYPECODE = T8.REPAIRTYPECODE ");
            sql.Append(" WHERE  T1.FRAMENO = '" + aFrameNo + "' ");
            sql.Append(" AND STATUSCODE = '99' ");
            sql.Append(" ORDER BY ");
            sql.Append(" REPAIRNO DESC ");

            DataSet ds = new DataSet();
            FillDataSet(sql.ToString(), ds, new string[] { "Tmp_RepairHis" });

            //
            string repairNo = string.Empty;
            string repairType = string.Empty;
            DataSet cloneDS = new DataSet();
            cloneDS.Merge(ds);
            cloneDS.Tables["Tmp_RepairHis"].Clear();
            var cloneRow = cloneDS.Tables["Tmp_RepairHis"].NewRow();
            DataRow addRow = null;

            if (ds.Tables["Tmp_RepairHis"].Rows.Count == 0)
            {
                return cloneDS;
            }
            foreach (DataRow row in ds.Tables["Tmp_RepairHis"].Rows)
            {
                if (string.IsNullOrEmpty(repairNo))
                {
                    repairNo = row["REPAIRNO"].ToString();
                    repairType = row["REPAIRTYPE"].ToString();
                }
                else if (repairNo == row["REPAIRNO"].ToString())
                {
                    if (row["REPAIRTYPE"] != null && row["REPAIRTYPE"] != DBNull.Value)
                    {
                        repairType = repairType + "," + row["REPAIRTYPE"].ToString();
                    }
                }
                else
                {
                    AddNewCloneRow(addRow, cloneRow, repairNo, repairType, cloneDS);

                    cloneRow = cloneDS.Tables["Tmp_RepairHis"].NewRow();
                    repairNo = row["REPAIRNO"].ToString();
                    repairType = row["REPAIRTYPE"].ToString();
                }

                addRow = row;
            }
            AddNewCloneRow(addRow, cloneRow, repairNo, repairType, cloneDS);
            cloneDS.AcceptChanges();
            return cloneDS;
        }

 

     private static void AddNewCloneRow(DataRow row, DataRow cloneRow, string repairNo, string repairType, DataSet cloneDS)
        {
            cloneRow["REPAIRNO"] = repairNo;
            cloneRow["REPAIRTYPE"] = repairType;
            //补充完整其他的数据行
            cloneRow["UNDERTAKER10"] = row["UNDERTAKER10"];
            cloneRow["RECEIVERNAME"] = row["RECEIVERNAME"];
            cloneRow["WALKDISTANCE"] = row["WALKDISTANCE"];
            cloneRow["RECEIVETIME"] = row["RECEIVETIME"];
            cloneRow["DELIVEREDDATE"] = row["DELIVEREDDATE"];
            cloneRow["ISINSURANCE"] = row["ISINSURANCE"];
            cloneRow["FIXEDDATE"] = row["FIXEDDATE"];
            cloneRow["CLAIMSNNAME"] = row["CLAIMSNNAME"];
            cloneRow["TOTALFEE"] = row["TOTALFEE"];

            cloneDS.Tables["Tmp_RepairHis"].Rows.Add(cloneRow);
        }

 

相关文章:

  • 处理和引发事件的规范
  • 图像的边缘提取
  • Linux之shell编程基础
  • 測试之路2——对照XML文件1
  • 魅族 连接 mac 调试
  • PhotoSwipe - 移动开发必备的 iOS 风格相册
  • https://github.com/cykl/infoqscraper/
  • 数据结构实验之栈四:括号匹配
  • django 安装/部署过程
  • 使用expdp的心得
  • 安装Ubuntu开发工具中心
  • Linux学习之CentOS(九)--Linux系统的网络环境配置
  • 关于Close和FormClosed FormClosing
  • oracle rac 日志体系结构!
  • 简单字符串比较
  • 《深入 React 技术栈》
  • 3.7、@ResponseBody 和 @RestController
  • 4. 路由到控制器 - Laravel从零开始教程
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JAVA并发编程--1.基础概念
  • k8s 面向应用开发者的基础命令
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 安卓应用性能调试和优化经验分享
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 什么是Javascript函数节流?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​ubuntu下安装kvm虚拟机
  • ​插件化DPI在商用WIFI中的价值
  • ###C语言程序设计-----C语言学习(6)#
  • #DBA杂记1
  • #QT(智能家居界面-界面切换)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (1)(1.9) MSP (version 4.2)
  • (floyd+补集) poj 3275
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (八十八)VFL语言初步 - 实现布局
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计高校学生选课系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (蓝桥杯每日一题)love
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (一)UDP基本编程步骤
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)大道至简,职场上做人做事做管理
  • ../depcomp: line 571: exec: g++: not found
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET开发者必备的11款免费工具
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .NET中GET与SET的用法
  • @EnableConfigurationProperties注解使用
  • @Service注解让spring找到你的Service bean
  • @在php中起什么作用?
  • [ARM]ldr 和 adr 伪指令的区别
  • [BZOJ 1040] 骑士