拼接多条记录的某个字段

有时候我们会遇到一条记录对应多条数据,需要拼接显示数据中的某个字段,例如项目实体表中有一条项目,对应设总表中的对条设总数据,这个时候我们需要将项目名称,设总名称查询出来显示在一个gridview列表中,就需要用sql拼接数据。

代码如下:

dtAllDate = new DataTable();
                    string sqlGetMen = string.Format(@"CREATE FUNCTION AllDesginMaster(@organid uniqueidentifier)
                            RETURNS VARCHAR(280)
                            AS
                            BEGIN
                            DECLARE @designMasters varchar(280)
                            SET  @designMasters=''       -----必须初始化
                            SELECT @designMasters+=coalesce(CASE @designMasters WHEN '' THEN '' END ,',' )+CAST(DesignName AS VARCHAR) 
                            FROM ProjectPhaseDesignMaster 
                            WHERE OrganizationId=@organid
                            RETURN @designMasters
                            END
                            ");
                    string sqlGetAllDate=string.Format(@"
                            SELECT P.OrganizationId,P.ProjectPhaseCode,P.ProjectPhaseName,P.ParamProjectTypeID,P.ProjectTypeCode,P.ProjectTypeName,DBO.AllDesginMaster(P.OrganizationId) AS DesginMasters,
                            P.PhaseID,P.PhaseName,P.DesignSize,
                            ( CASE  P.ProjectState WHEN 1 THEN '已启动'
                                        WHEN 2 THEN '正在进行'
                                        WHEN 3 THEN '暂停'
                                        WHEN 4 THEN '终止'
                                        WHEN 5 THEN '设计完成'
                                        WHEN 6 THEN '结束' END ) AS ProjectState
                            ,P.FormProjectDate,P.InstitutionFinishDate,ISNULL(C.ContractSum,0)/10000 AS ContractSum ,
                            ISNULL(C.CompleteReceiveSum,0)/10000 AS CompleteReceiveSum,(ISNULL(C.ContractSum,0)-ISNULL(C.CompleteReceiveSum,0))/10000 AS ResidueSum,
                            ISNULL(P.SuverySchedule,0) AS SuverySchedule,ISNULL(P.FinishRate,0) AS FinishRate,M.CapabilityID
                            FROM ProjectPhaseEntity P LEFT JOIN ContractEntity C
                            ON P.OrganizationId=C.ProjectID  LEFT JOIN MarketProject M 
                            ON P.MarketProjectID=M.MarketProjectID
                            ORDER BY P.ParamProjectTypeID,P.ProjectPhaseCode
                            DROP FUNCTION DBO.AllDesginMaster");
                    KPMSDB.ExecuteNonQuery(CommandType.Text, sqlGetMen);
                    dtAllDate = KPMSDB.ExecuteDataSet(CommandType.Text, sqlGetAllDate).Tables[0];


说明:在sql查询器中,sqlGetMen和sqlGetAllDate通过“GO”连接可以一起执行,但是在asp.net中是不识别GO,会报GO附近有语法错误,所以我给拆成两条sql语句分别执行。

效果显示如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值