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