关于交叉表查询后的数据绑定问题!
我有一个表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)
交叉表的查询如上现在已经搞定了,可以直接绑定到GRIDVIEW上了。不过有个问题是,我的编号字段是1到16中的一个数,排序由低到高。如果是绑定到GRIDVIEW的话,数据库中假如没有其中一个数,绑定出来的GRIDVIEW是没有那一行的,但我的表是即使没有那一行也要有编号和一个空行。之前本来在ASP.NET区询问,怎样用GRIDVIEW或TABLE实现,但给出的建议是最好还是在交叉表查询的时候实现。仔细想想这样更好,所以来这里问。
顺便想问的是上面的SQL存储过程如果在代码里实现?我用C#,谢谢。我现在用的是个笨办法,在分析查询器里用了个print @sql,查看了一下最终的语句,复制到了sqlcommand.commandText里,因为我的查询结果只是一周的数据,所以日期字段是函数调用的。不过多了或日期字段没有明确值就没法用了。再次谢谢
[解决办法]
--sorry, 漏了一些
select * from
(
select 编号=1
union all select 2
union all select 3
union all select 4
...
union all select 16
)A
left join (动态SQL生成的结果集) B on A.编号=B.编号
[解决办法]
自动填充固定行数的 GridView
http://dotnet.aspx.cc/article/ee911c00-0e99-4e50-a941-3defa599ef48/read.aspx