• 好几条记录只是仓位及数量不同,其它内容都一样,现在要显示出一条来,仓位及数量用"/"分开


    如   A:
    ID       GoodsId         GoodsName         Position       Amount
    1         FBM                    方便面                  01                200
    2         FBM                    方便面                  02                411
    3         FBM                    方便面                  03                458
    4         NN                      牛  奶                    04                100
    5         NN                      牛  奶                    05                562
    6         NN                      牛  奶                    06                248
    ....
    如 B:
    现在要显示下面这样
    GoodsID   GoodsName       Position              Amount
    FBM            方便面                 01/02/03            200/411/458
    NN              牛  奶                   04/05/06            100/562/248
    ....

    实现这种有两种方法

    一种就是在数据库端写Sql语句来实现;

    另一种就是把要的全都取出来,然后在.cs文件里写代码进行处理后邦定到DataGrid(GridView,DataList,等)中去。

     后一种就不用说了,主要是说一下第一种用一句Sql语句来实现.

    首先建两个函数,通过传入参数的方面返回要的结束,如B中Position那样

    /*
       获取仓位
    */

    CREATE FUNCTION [dbo].[Get_StorePos] 
    (
        
    @CompanyId varchar(20),
        
    @GoodsId varchar(20)
    )  
    RETURNS varchar(8000AS  
    BEGIN 
    declare @storePos varchar(8000)
        
    set @storePos = ''
        
    select @storePos = @storePos + storePos + '/' from  View_GoodsBaseInfo_1 where CompanyId = @CompanyId and goodsId = @GoodsId
        
    return @storePos;
    END
    go
    /*
    获取数量
    */

    CREATE FUNCTION [dbo].[Get_storeQty] 
    (
        
    @CompanyId varchar(20),
        
    @GoodsId varchar(20)
    )  
    RETURNS varchar(8000AS  
    BEGIN 
        
    declare @storeQty varchar(8000)
        
    set @storeQty = ''
        
    select @storeQty = @storeQty + convert(varchar(20),storeQty) + '/' from  View_GoodsBaseInfo_1 where CompanyId = @CompanyId and goodsId = @GoodsId
        
    return @storeQty;
    END


    下面是那条Sql语句,是用来显示内容如B那种。
    --显示出结果
    select 
    *, dbo.Get_StorePos(a.CompanyId,a.GoodsId) as storePos ,dbo.Get_storeQty(a.CompanyId,a.GoodsId) as StoreQty from (
        select DISTINCT companyId,goodsId,GoodName,PackageFmt,SUnitName,price,SaleFmt,CacuBaseParam,TaxRate
        from View_GoodsBaseInfo_1
    )
    as a

    下面这条Sql语句的执行效率不知道比上面那条快呢?
    select companyId,GoodsId,GoodName,PackageFmt,SUnitName,price,SaleFmt,CacuBaseParam,TaxRate,storePos=dbo.Get_StorePos(CompanyId,GoodsId),storeQty=dbo.Get_storeQty(CompanyId,GoodsId)
    from View_GoodsBaseInfo_1 
    group by  companyId,GoodsId,GoodName,PackageFmt,SUnitName,price,SaleFmt,CacuBaseParam,TaxRate
    order by GoodsId



    有人说下面那条要快,可是我个人觉得差不多。
    也许可能是我的知识有限吧,还有就是我的测试数据太少
    它们的开销什么的都一样。

  • 相关阅读:
    spring boot集成redis和mongodb实现计步排名
    spring boot + redis 实现网站限流和接口防刷功能
    基于spring-boot-data-jdbc的RowMapper实例的初始化配置,配置内容和实体类的代码由测试类生成
    自定义注解并封装成jar包,实现一般方法和Controller类的入参、出参和执行时间的日志打印
    封装自己的spring-boot-starter实现初始化字典数据和脱敏(windows10+jdk8+idea+spring-boot2.1.5)
    spring boot 集成mybatis的多数据源
    常用工具说明--jsdoc 前端文档输出工具
    常用工具说明--mysql数据库安装
    web前端--实现前后端分离的心得
    资料汇总--Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)【转】
  • 原文地址:https://www.cnblogs.com/xiaotuni/p/2365739.html
Copyright © 2020-2023  润新知