各位大虾这个问题怎么解决呀!

yanghy2013 2006-04-07 09:03:05
我现在想实现一个这样的功能
比如现在有如下记录:
姓名 数量 日期
张三 100 2006-04-01
李四 1000 2006-04-01
张三 500 2006-04-02
李四 1500 2006-04-02
现在我想在报表里面显示成如下的样式,请问怎么实现?小弟我头皮都抓破了好多都没想出什么好方法.
姓名 4-1的数量 4-2的数量
张三 100 500
李四 1000 1500
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanghy2013 2006-04-08
  • 打赏
  • 举报
回复
谢谢了,用函数解决了
xeqtr1982 2006-04-07
  • 打赏
  • 举报
回复
--来个动态的
create table tb(姓名 varchar(10),数量 varchar(10),日期 varchar(10))
insert into tb select '张三',100,'2006-04-01'
union all select '李四',1000,'2006-04-01'
union all select '张三',500,'2006-04-02'
union all select '李四',1500,'2006-04-02'

declare @sql varchar(8000)
set @sql='select 姓名'
select @sql=@sql+',['+cast(month(日期) as varchar)+'-'+cast(day(日期) as varchar)+']=max(case 日期 when '''+日期+''' then 数量 else 0 end)' from tb group by 日期
print @sql
exec(@sql+' from tb group by 姓名')

drop table tb
十一月猪 2006-04-07
  • 打赏
  • 举报
回复
declare @s varchar(1000)
select @s = ''
select @s = @s + ', max(case convert(varchar(10),date,120) when ''' + convert(varchar(10),date,120) + ''' then qty end) as ''' +substring(convert(varchar(10),date,120),6,10) + '的数量'''
from #
group by date
select @s = 'select name ' + @s + ' from # group by name'
exec(@s)
yanghy2013 2006-04-07
  • 打赏
  • 举报
回复
楼上好象意思理解错了
我的意思是把张三这个人的记录合成一条
李四的记录合成一条
上面的记录并不是固定不变的记录数还可以增加的
十一月猪 2006-04-07
  • 打赏
  • 举报
回复

select name ,
max(case convert(varchar(10),date,112) when '20060401' then qty end ) as '4-1的数量',
max(case convert(varchar(10),date,112) when '20060402' then qty end ) as '4-2的数量'
from #
group by name

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧