如 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(8000) AS
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(8000) AS
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语句的执行效率不知道比上面那条快呢?
from View_GoodsBaseInfo_1
group by companyId,GoodsId,GoodName,PackageFmt,SUnitName,price,SaleFmt,CacuBaseParam,TaxRate
order by GoodsId
有人说下面那条要快,可是我个人觉得差不多。
也许可能是我的知识有限吧,还有就是我的测试数据太少
它们的开销什么的都一样。