我想把数据库中的数据按图一类似的格式显示出来,但数据库的数据是图二的格式,怎么实现,C#,winform的

图一我要显示的效果,不用中间的所属地区成都市这几个字,然后上面的日期,下面是对应站点的pr1数值我用datagridview显示数据,图二,数据库中的数据格式,请问怎么实... 图一我要显示的效果,不用中间的所属地区成都市这几个字,然后上面的日期,下面是对应站点的pr1数值
我用datagridview显示数据,

图二,数据库中的数据格式,请问怎么实现这个功能,数据库是sql server 2008的,其中st是smalldatetime类型,zhanming是nvarchar类型,pr1是float类型,求具体代码,非常感谢
,这是界面上的,要根据所选的时间范围和站点名称显示对应的数据,求解答,谢谢啦
展开
 我来答
怒风十三幺
2013-07-05 · 超过22用户采纳过TA的回答
知道答主
回答量:47
采纳率:100%
帮助的人:18.6万
展开全部
使用行列转换 pivot
create table #CityTest
(
area nvarchar(200),
st smalldatetime,
pr1 float
)

insert into #CityTest
( area, st, pr1 )
select N'都江堰','2012-10-13 18:00:00',23.9
union
select N'都江堰','2012-10-14 18:00:00',21.9
union
select N'小溪坝','2012-10-13 21:00:00',6.7
union
select N'秀山','2012-10-13 18:00:00',3
union
select N'青龙镇','2012-10-14 23:00:00',2.9

--查询开始
--创建一个临时表
if object_id('tempdb..#tempArea') is not null drop table #tempArea
select area,convert(nvarchar(2),datepart(month,st))+'/'+convert(nvarchar(2),datepart(dd,st)) as st,pr1
into #tempArea
from #CityTest
order by st

declare @dateStr nvarchar(max)
select @dateStr=isnull(@dateStr+',','')+'['+s.st+']'
from(
select distinct st
from #tempArea where len(st)>0
) s

exec('select * from
#tempArea
pivot
(
max(pr1) for st in ('+@dateStr+')
)b')

不过在程序中操作要方便一些
追问
高手呀,程序中怎么操作呢,求具体代码,我的程序里,时间st是变量,就是根据两个时间控件选择查询st的范围,望您解答
烟花破
2013-07-05 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:74.7万
展开全部
给你个思路:
在程序中用DATATABLE做行列转换。只在数据到了程序中,那想怎么变就怎么变。
追问
能写个具体代码吗,我是初学者,现在着急用,谢谢啦
追答
把数据先装入datatable A。然后再用另一个datatable B作为结果。
然后在B中先把行列手工写上去,之后对B的行和列用二个循环来定位每个一单元格,再将每个单元格中行和列作为条件(比如 都江堰、6/24号)再去datatable A中查找。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式