首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-02-24 
请问好几条记录只是仓位及数量不同,其它内容都一样,现在要显示出一条来,仓位及数量用/分开这个怎么写?请

请问好几条记录只是仓位及数量不同,其它内容都一样,现在要显示出一条来,仓位及数量用"/"分开这个怎么写?
请问好几条记录只是仓位不同,其它内容都一样,现在要显示出一条来仓位用 "/ "分开这个怎么写?


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
....

现在要显示下面这样
GoodsID       GoodsName               Position                             Amount
FBM                 方便面                   01/02/03                         200/411/458
NN                   牛     奶                   04/05/06                         100/562/248
....

请问这个怎样的句语怎么写呢?


[解决办法]
up
[解决办法]
行转列的问题
Try:

create table #T
(id varchar(2) , n1 varchar(2) , n2 varchar(2))



Insert into #t
select '01 ', 'x ', 'x ' Union
select '02 ', 'x ', 'y ' Union
select '03 ', 'x ', 'z ' Union
select '04 ', 'y ', 'x ' Union
select '05 ', 'y ', 'y ' Union
select '06 ', 'y ', 'z ' Union
select '07 ', 'z ', 'x ' Union
select '08 ', 'z ', 'y ' Union
select '09 ', 'z ', 'z '

Select * from #t

declare @sql1 varchar(8000)
declare @sql2 varchar(8000)
declare @sql3 varchar(8000)

Select @sql1 = ' ' , @sql2 = ' ' , @sql3 = ' '

Select @sql1 = @sql1 + ', max(case when id = ' ' ' + id + ' ' ' then id else ' ' ' ' end) as ' ' '+ 'col ' + id + ' ' ' '
from #t
group by id
Select @sql2 = @sql2 + ', max(case when id = ' ' ' + id + ' ' ' then n1 else ' ' ' ' end) '
from #t
group by id
Select @sql3 = @sql3 + ', max(case when id = ' ' ' + id + ' ' ' then n2 else ' ' ' ' end) '
from #t
group by id

Select @sql1 = stuff(@sql1 , 1 , 1, ' ')
Select @sql2 = stuff(@sql2 , 1 , 1, ' ')
Select @sql3 = stuff(@sql3 , 1 , 1, ' ')


Select @sql1 = ' Select ' + @sql1 + ' from #t '
Select @sql2 = ' Select ' + @sql2 + ' from #t '
Select @sql3 = ' Select ' + @sql3 + ' from #t '
Exec(@sql1 + ' union all ' + @sql2 + ' union all ' + @sql3)

drop table #
[解决办法]
类似这种问题都可以帮定两次
第一次是如你第一次显示那样(table1)
再定义一个table2
for(int i=0;i <table1.rows.count)
{
......
}
这样,随便你怎么做都行
[解决办法]
或者可以这样,麻烦一点
select GoodsId,GoodsName,Position=AddStr(Position),Amount=AddStr(Amount)
from result
group by GoodsId
order by GoodsId

建个函数,利用游标,你去试试create function AddStr

[解决办法]
学习
[解决办法]
按照geoffe() ( ) 信誉:100 这样做反而效率最高
因为就对数据库操作了一次,而且不需要太多的连接和union等操作;逻辑代码运行是最快的
[解决办法]
可以利用SQL,为什么不去直接用SQL得到这个么表,而去做FOR?
[解决办法]
你那样,没我的这高
CREATE FUNCTION AddStr(@GoodsId varchar(1000))
RETURNS VARCHAR(8000)
AS
BEGIN
declare @sql varchar(8000)
set @sql= ' '
select @sql=coalesce(@sql, ' ')+Position+ '/ ' from friend where GoodsId=@GoodsId


RETURN @sql
END

select GoodsId,GoodsName,Position=AddStr(Position),Amount=AddStr(Amount)
from result
group by GoodsId
order by GoodsId

热点排行