交叉表查询的问题!

inbell 2007-02-01 08:37:53
我有一个表table,有编号(id),名称(name),日期(date)...等字段,通过交叉表查询实现

   2007-1-1 2007-1-2 2007-1-3 2007-1-4 ...
编号 名称 名称 名称 名称 ...
编号 名称 名称 名称 名称 ...
编号 名称 名称 名称 名称 ...
...

--------------------------------------------------------------------------
declare @sql varchar(5000)
set @sql=''
select @sql=@sql+',['+date+']=max(case date when '''+date+''' then name end)'
from table group by date order by date
set @sql='select id'+@sql+' from table group by id
exec(@sql)


交叉表的查询已经做好了。可目前有个问题就是我的编号字段有些并不是唯一的(有重复),但通过上面的交叉表查询出来的结果是单元格内只显示一条数据。有什么方法能让单元格中同时绑定几个name,中间分分隔符连接?
再有就是我的表中有个BIT型的字段,交叉表查询后是要绑定到GRIDVIEW的,怎样根据BIT的值自定义GRIDVIEW中单元格的背景颜色?谢谢
...全文
204 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rookie_one 2007-02-01
  • 打赏
  • 举报
回复
创建函数:
create function f_str(@id varchar(10))
returns varchar(100)
as
begin
declare @str varchar(1000)
set @str=''
select @str=@str+[name] from 表名 where [id]=@id
return @str
end


在语句中调用:

declare @sql varchar(5000)
set @sql=''
select @sql=@sql+',['+date+']=max(case date when '''+date+''' then dbo.f_str('+id+') end)'
from 表明 group by date order by date
set @sql='select id '+@sql+' from 表明 group by id'
exec(@sql)

rookie_one 2007-02-01
  • 打赏
  • 举报
回复
试试看~
declare @sql varchar(5000)
set @sql=''
select @sql=@sql+',['+date+']=max(case date when '''+date+''' then dbo.f_str('+id+') end)'
from tablename group by date order by date
set @sql='select id '+@sql+' from tablename group by id'
exec(@sql)
rookie_one 2007-02-01
  • 打赏
  • 举报
回复
在动态sql中调用这个函数试试看

GO
create function f_str(@id varchar(10))
returns varchar(100)
as
begin
declare @str varchar(100)
set @str=''
select @str=@str+[name] from A where [id]=@id
return @str
end


34,870

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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