winform(c#)数据显示问题

问题描述

winform(c#)连接数据库查询出的数据格式如下:7135000月租费207135000市话费207135000长话费20我想显示为如下格式:电话号码月租费市话费长话费7135000202020请问如何实现?急!

解决方案

解决方案二:
createtablet(telephonevarchar(10),fnamevarchar(10),feeint)goinsertintotvalues('7135000','月租费',20)insertintotvalues('7135000','市话费',20)insertintotvalues('7135000','长话费',20)go--我想显示为如下格式:电话号码月租费市话费长话费--7135000202020selecttelephoneas电话号码,max(casefnamewhen'月租费'thenfeeelse0end)as'月租费',max(casefnamewhen'市话费'thenfeeelse0end)as'市话费',max(casefnamewhen'长话费'thenfeeelse0end)as'长话费'fromtgroupbytelephonedroptablet

解决方案三:
厉害,SQL
解决方案四:
createtable#Tel(telIDintidentity(1,1)notnull,TelCodevarchar(20),TelKindvarchar(50),TelFaremoney)insert#Telvalues(7135000,'Month',20)insert#Telvalues(7135000,'City',20)insert#Telvalues(7135000,'Long',20)select*from#TelselectTelCode,Max(caseTelKindwhen'Month'thenTelFareelse0end)as'Month',Max(CaseTelKindwhen'City'thenTelFareelse0end)as'City',Max(CaseTelKindwhen'Long'thenTelFareelse0end)as'Long'from#TelgroupbyTelCodedroptable#Tel
解决方案五:
跟一楼的一样。(回复内容太短了!)
解决方案六:
学习+关注!!帮你顶!!
解决方案七:
假设你的表如下:table1电话号码fif27135000月租费207135000市话费207135000长话费20select电话号码,月租费,市话费,长话费from(select电话号码,f1,f2fromtable1)ppivot(count(f2)forfiin(月租费,市话费,长话费))astable2orderby电话号码
解决方案八:
一楼的,厉害!完全同意.
解决方案九:
列转行!学习,呵呵^^^^^^&
解决方案十:
看来已经解决了我学习下!我是小菜鸟!说的不好清见谅,希望能够帮到你!
解决方案十一:
一楼厉害,二楼也厉害
解决方案十二:
自己写一个Sql存储过程createprocproc_test@tel_numvarchar(13)as--假设你的原始表为feelistselect电话号码[字段1],费用类别[字段2],费用sum([字段3])into#tmp1fromfeelistwhere[字段1]like@tel_num+'%'groupby[字段1],[字段2]--若有其他费用,可添加列createtable#tmp2{[电话号码]varchar(13),[月租费]decimal(10,2),[市话费]decimal(10,2),[长话费]decimal(10,2)}--向#tmp2表中插入你想要得到的数据declare@telvarchar(13)declare@cur_testcursorfast_forwardforselect[电话号码]from#tmp1gourpby[电话号码]orderyb[电话号码]--可能会有多个电话号码fetechnextfrom@cur_testinto@telwhile(fetech_status<>-1)begininsertinto@tmp2values(@tel,(select[费用]fromtmp1where[电话号码]=@teland[费用类别]='月租费'),(select[费用]fromtmp1where[电话号码]=@teland[费用类别]='市话费'),(select[费用]fromtmp1where[电话号码]=@teland[费用类别]='长话费'))ftechnextfrom@cur_testinto@telendclose@cur_testdeallocate@cur_testselect*from#tmp2客户端调用:SqlCommandcmd=newSqlCommand();cmd.CommandText="execproc_test('7135000')";
解决方案十三:
createtable#tbl(telephonevarchar(10),fnamevarchar(10),feeint)setnocountoninsertinto#tblvalues('7135000','月租费',20)insertinto#tblvalues('7135000','市话费',20)insertinto#tblvalues('7135000','长话费',20)insertinto#tblvalues('7135001','信息费',20)declare@ExecSqlvarchar(200)select@ExecSql=''createtable#YbTable(telephonevarchar(10))insertinto#YbTable(telephone)selectdistincttelephonefrom#Tbldeclare@Itemvarchar(10)declareItemcursorforselectdistinctfnamefrom#tblopenItemfetchnextfromIteminto@Itemwhile@@fetch_status=0beginselect@ExecSql='altertable#YbTableadd'+@Item+'int'exec(@ExecSql)select@ExecSql='update#YbTableset'+@Item+'=feefrom#Tblwherefname='''+@Item+'''and#YbTable.telephone=#Tbl.telephone'exec(@ExecSql)fetchnextfromIteminto@ItemendcloseItemdeallocateItemselect*from#YbTabledroptable#tbldroptable#YbTable
解决方案十四:
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[t]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[dbo].[t]GOcreatetablet([id]varchar(20),typevarchar(20),totalnumeric(12,2))inserttselect'7135000','月租费',20unionallselect'7135000','市话费',20unionallselect'7135000','长话费',20select*fromtselect'电话号码'=[id],'月租费'=sum(casetypewhen'月租费'thentotalelse0end),'市话费'=sum(casetypewhen'市话费'thentotalelse0end),'长话费'=sum(casetypewhen'长话费'thentotalelse0end)fromtgroupby[id]--动态SQLdeclare@strvarchar(4000)select@str='select电话号码=[id]'select@str=@str+',['+type+']=sum(casetypewhen'''+type+'''thentotalelse0end)'fromtgroupbytypeexec(@str+'fromtgroupby[id]')droptablet/*(所影响的行数为3行)idtypetotal------------------------------------------------------7135000月租费20.007135000市话费20.007135000长话费20.00(所影响的行数为3行)电话号码月租费市话费长话费--------------------------------------------------------------------------------------------------------------------------------------------713500020.0020.0020.00(所影响的行数为1行)电话号码长话费市话费月租费--------------------------------------------------------------------------------------------------------------------------------------------713500020.0020.0020.00*/

解决方案十五:
转SQL版龟帖:/*普通行列转换(爱新觉罗.毓华2007-11-18于海南三亚)假设有张学生成绩表(tb)如下:NameSubjectResult张三语文  74张三数学  83张三物理  93李四语文  74李四数学  84李四物理  94*/-------------------------------------------------------------------------/*想变成姓名语文数学物理-------------------------------------------李四748494张三748393*/createtabletb(Namevarchar(10),Subjectvarchar(10),Resultint)insertintotb(Name,Subject,Result)values('张三','语文',74)insertintotb(Name,Subject,Result)values('张三','数学',83)insertintotb(Name,Subject,Result)values('张三','物理',93)insertintotb(Name,Subject,Result)values('李四','语文',74)insertintotb(Name,Subject,Result)values('李四','数学',84)insertintotb(Name,Subject,Result)values('李四','物理',94)go--静态SQL,指subject只有语文、数学、物理这三门课程。selectname姓名,max(casesubjectwhen'语文'thenresultelse0end)语文,max(casesubjectwhen'数学'thenresultelse0end)数学,max(casesubjectwhen'物理'thenresultelse0end)物理fromtbgroupbyname/*姓名语文数学物理-------------------------------------------李四748494张三748393*/--动态SQL,指subject不止语文、数学、物理这三门课程。declare@sqlvarchar(8000)set@sql='selectNameas'+'姓名'select@sql=@sql+',max(caseSubjectwhen'''+Subject+'''thenResultelse0end)['+Subject+']'from(selectdistinctSubjectfromtb)asaset@sql=@sql+'fromtbgroupbyname'exec(@sql)/*姓名数学物理语文-------------------------------------------李四849474张三839374*/-------------------------------------------------------------------/*加个平均分,总分姓名语文数学物理平均分总分--------------------------------------------------------------------------李四74849484.00252张三74839383.33250*/--静态SQL,指subject只有语文、数学、物理这三门课程。selectname姓名,max(casesubjectwhen'语文'thenresultelse0end)语文,max(casesubjectwhen'数学'thenresultelse0end)数学,max(casesubjectwhen'物理'thenresultelse0end)物理,cast(avg(result*1.0)asdecimal(18,2))平均分,sum(result)总分fromtbgroupbyname/*姓名语文数学物理平均分总分--------------------------------------------------------------------------李四74849484.00252张三74839383.33250*/--动态SQL,指subject不止语文、数学、物理这三门课程。declare@sql1varchar(8000)set@sql1='selectNameas'+'姓名'select@sql1=@sql1+',max(caseSubjectwhen'''+Subject+'''thenResultelse0end)['+Subject+']'from(selectdistinctSubjectfromtb)asaset@sql1=@sql1+',cast(avg(result*1.0)asdecimal(18,2))平均分,sum(result)总分fromtbgroupbyname'exec(@sql1)/*姓名数学物理语文平均分总分--------------------------------------------------------------------------李四84947484.00252张三83937483.33250*/droptabletb------------------------------------------------------------------------------------------------------------------/*如果上述两表互相换一下:即姓名语文数学物理张三74  83  93李四74  84  94想变成NameSubjectResult----------------------------李四语文74李四数学84李四物理94张三语文74张三数学83张三物理93*/createtabletb1(姓名varchar(10),语文int,数学int,物理int)insertintotb1(姓名,语文,数学,物理)values('张三',74,83,93)insertintotb1(姓名,语文,数学,物理)values('李四',74,84,94)select*from(select姓名asName,Subject='语文',Result=语文fromtb1unionallselect姓名asName,Subject='数学',Result=数学fromtb1unionallselect姓名asName,Subject='物理',Result=物理fromtb1)torderbyname,caseSubjectwhen'语文'then1when'数学'then2when'物理'then3when'总分'then4end--------------------------------------------------------------------/*加个平均分,总分NameSubjectResult-------------------------------------李四语文74.00李四数学84.00李四物理94.00李四平均分84.00李四总分252.00张三语文74.00张三数学83.00张三物理93.00张三平均分83.33张三总分250.00*/select*from(select姓名asName,Subject='语文',Result=语文fromtb1unionallselect姓名asName,Subject='数学',Result=数学fromtb1unionallselect姓名asName,Subject='物理',Result=物理fromtb1unionallselect姓名asName,Subject='平均分',Result=cast((语文+数学+物理)*1.0/3asdecimal(18,2))fromtb1unionallselect姓名asName,Subject='总分',Result=语文+数学+物理fromtb1)torderbyname,caseSubjectwhen'语文'then1when'数学'then2when'物理'then3when'平均分'then4when'总分'then5enddroptabletb1

解决方案:
动态SQL适合项目比较多的情况
解决方案:
嗯。一楼强大,N楼强大
解决方案:
路过,收获不少?路过,收获不少?
解决方案:
哇,都是牛人啊收获大大滴有哦
解决方案:
ithinkthebestmethodisthatyouselectdatafromdatabaseastheformat:7135000202020anddatabandtoadatagridview
解决方案:
不好意思,我没有表达清楚,SQL语句我已经实现了正如一楼朋友的方法。我想问得是通过c#程序如何实现?
解决方案:
你要在窗体上这样显示数据还是什么意思?那就通过数据库操作在界面上用控件来绑定就可以了啊!
解决方案:
都~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~牛B啊
解决方案:
datagrid或gridview只能绑定出如下效果:7135000月租费207135000市话费207135000长话费20我想显示为如下格式:电话号码月租费市话费长话费7135000202020
解决方案:

解决方案:
引用20楼zhaoyong76的回复:

不好意思,我没有表达清楚,SQL语句我已经实现了正如一楼朋友的方法。我想问得是通过c#程序如何实现?

如果你用的和一楼一样的SQL语句的话,得到的结果就是电话号码月租费市话费长话费7135000202020的啊,你把数据填充到DataSet里面再绑定到DataGrid显示的也是一样的
解决方案:
引用25楼zzyhuian06142的回复:

引用20楼zhaoyong76的回复:不好意思,我没有表达清楚,SQL语句我已经实现了正如一楼朋友的方法。我想问得是通过c#程序如何实现?如果你用的和一楼一样的SQL语句的话,得到的结果就是电话号码月租费市话费长话费7135000202020的啊,你把数据填充到DataSet里面再绑定到DataGrid显示的也是一样的

我说的不也就是这意思嘛!SQL语句给你了都,你把SQL语句换成一楼那样,不就显示出你要的结果了嘛!感觉你很不变通,东西都已经有了,你也应该知道怎么绑定的,怎么就不会换条SQL语句呢?
解决方案:
楼上的朋友这种方法不通用,如果是MSsqlSERVER可以,informix数据库就不行。
解决方案:
数据都获得了,想怎么显示还不简单?你喜欢月租费电话号码市话费长话费2071350002020都得啦,
解决方案:
youcantransferthedatatoanothertableas7135000202020thendatabandtodatagrid
解决方案:
用CASE分类统计啦楼上几位也不错的
解决方案:
如果查询出来的数据定死了的话,可以考虑对DATATBLE做处理,把数据循环插入到新的表中,然后绑定数据
解决方案:
DATATABLE17135000月租费207135000市话费207135000长话费20DATATABLE2电话号码月租费市话费长话费7135000202020对DATATABLE1分组过滤,经过C#代码处理,写到DATATABLE2总的来说用C#来处理会有相当的运算量,尤其是需要做全表过滤
解决方案:
楼主的意思是在界面上处理格式吧。。。楼上的朋友们都太强了用控件吧,设置一个标头应该就可以了

时间: 2024-10-07 23:25:24

winform(c#)数据显示问题的相关文章

字段-winform DataGrid 数据显示

问题描述 winform DataGrid 数据显示 如果通知数 字段为20 点击拆分按钮 就会在DataGrid中显示20行数据,每行的通知数 字段 为1 这个功能怎么实现 解决方案 向DataGrid插入20行数据,每行的通知数为1不就行了,你需求的本义没有描述清楚

异曲同工 WinForm和ASP.NET如何选?

在.NET平台开发中,我们经常使用WinForm进行C/S架构的开发,也用过ASP.NET作为B/S架构开发.那么有些人可能糊涂了,不知道在这两者之间如何做选择了.其实作为将来要在.NET平台上做开发的工作者来说,无论如何都要同时掌握WinForm编程和ASP.NET编程. 当我们开始开发带有用户界面的应用程序时,可以使用WinForm或ASP.NET.两者在开发环境(Visual Studio系列)中都具有完全的设计时支持,并且可以提供丰富的用户界面和高级应用程序功能解决现实业务问题.由于这种

winform 多线程,谁帮我解决一个问题

问题描述 窗体信息:1.winform窗体上有[ListView1.txtWeb1.txtWeb2.txtWeb3]几个控件.省略其它控件2.[ListView1]里的每一行数据都是要拿出来对网络请求.每一行数据的某一列是一个URI功能要求是:间隔一秒对[ListView1]检查数据.如果有1条或者N条:分别创建最多3个线程..第一个线程对网络访问的数据显示在txtWeb1上并且在ListView1中删除当前执行的一行数据.txtWeb2为第二个线程访问的数据.txtWeb3为第三个线程访问的数

字符集-vs2008做的窗体程序查询oracle数据库数据,中文数据显示乱码

问题描述 vs2008做的窗体程序查询oracle数据库数据,中文数据显示乱码 公司的服务器字符集是英文的,然后我在电脑上装了oracle和plsql,修改了oracle下的注册表字符集都为英文的.我在plsql中查询的中文数据都可以正常显示,我在里面添加的中文数据也可以正常显示.但是,我在vs2008中做了一个查询,将查询出来的数据绑定到datagridview控件上,就出现了中文数据显示乱码,还有就是我自己在vs2008中添加新数据,在plsql中看到的数据中中文都显示为??? 跪求高手帮帮

C# 是使用Winform操作MYSQL 新增,读取数据乱码

1.C# Winform 连接MYSQL 对MySQL进行新增,读取数据操作,使用Mysql.MySql.Data组件进行数据连接及操作 2.mysql教程的版本本较低4.01 不能对Mysql的环境进行配置 来源:http://www.dezai.cn/blog/article.asp教程?id=418 现象: 1.新增数据正常操作,但是插入MYSQL数据库教程中的对应表中的数据成问号形式 2.Mysql表中中文数据显示正常,但通过datagridview读取显示?号 解决过程 1.在mysq

用C#做winform数据采集系统,一边显示一边保存到数据库问题

问题描述 我想做这么一个小系统,目前已经定好用C#winform去实现,由于我是新手,请大家多多指教该系统通过网络或串口接收来至远端设备的数据,并把当前收到的数据在winform上显示,只显示最新的500条数据,超过500条,则把最早收到的数据删除掉,问题1:DataGridView能否实现显示最近的500条数据我目前想用DataGridView,不知道能否实现,请大家支招!!!!!!收到数据在UI上显示,同时也要把数据稍微做解析插入数据库中,数据速率还是挺频繁,问题2:一边UI显示与一边插入数

Winform开发框架中工作流模块的业务表单开发

在我们开发工作流的时候,往往需要设计到具体业务表单信息的编辑,有些是采用动态编辑的,有些则是在开发过程中处理的,各有各的优点,动态编辑的则方便维护各种各样的表单,但是数据的绑定及处理则比较麻烦,而自定义开发的,则数据弹性很大,方便修改调整.本篇随笔基于表单的开发设计过程,介绍在工作流中如何新增一个业务表单,以便快速的实现审批业务的上线处理. 1.业务表单的基类继承 首先我们来了解一下业务表单的对应关系,一般创建一个业务流程处理,都需要有一个具体的创建业务表单的界面,以及一个查看处理表单的界面.

Winform界面中主从表编辑界面的快速处理

在Winform开发中,我们往往除了常规的单表信息录入外,有时候设计到多个主从表的数据显示.编辑等界面,单表的信息一般就是控件和对象实体一一对应,然后调用API保存即可,主从表就需要另外特殊处理,本随笔介绍如何快速实现主从表编辑界面的处理,结合GridControl控件的GridView控件对象,实现数据在列表中的实时编辑,非常方便. 1.主从表的界面设计及展示 主从表一般涉及两个以上的表,一个是主表,其他的是从表的,在实际情况下,一般包含两个表较多,我们这里以两个表的主从表关系进行分析处理.

Winform开发框架之字段权限控制

在我的很多Winform开发项目中(包括混合框架的项目),统一采用了权限管理模块来进行各种权限的控制,包括常规的功能权限(按钮.菜单权限).数据权限(记录的权限),另外还可以进行字段级别的字段权限控制,字段权限是我们在一些对权限要求比较严格的系统里面涉及到的,可以对部分用户隐藏一些敏感的信息.本篇主要介绍字段权限的控制思路及实现机制,以便大家对这个字段权限的控制有一个直观的了解. 如果需要对权限系统的功能进行一定的了解,可以先回顾下我前面的文章<Winform开发框架之权限管理系统功能介绍>.