问题描述
在数据库中,每条记录都有一个【登陆时间】,格式为:yyyy/mm/dd。现在在页面上输入【开始时间】和【结束时间】,对每个月的记录进行统计。要求标题列根据页面上输入的时间范围进行动态生成。比如,页面上输入:【开始时间】:2011/01/01【结束时间】:2011/05/02则如下进行显示:姓名共计金额2011/012011/022011/032011/042011/05aa1000050000500bb2000100005005000请问这样的表头怎么动态生成,还有怎么进行统计.
解决方案
解决方案二:
那你就根据时间查询记录根据记录条数循环显示数据就可以了
解决方案三:
怎么生成,怎么统计就是你的算法,代码该怎么写的,难度不大,自己去写吧
解决方案四:
思路如下:(1)根据条件获得所有数据(2)列转行(行列转换的一种,网上可以找到很多资料的)注:推荐书籍《SQlCookBook》,t-sql/p-sql各种复杂的语法都可以学到
解决方案五:
我说的这种做法,完全是用SQL生成出你的数据结构的。
解决方案六:
this.dataGridView.Columns.Clear();DataGridViewTextBoxColumncolumnLis=newDataGridViewTextBoxColumn();columnLis.ReadOnly=true;columnLis.HeaderText="使用単価名";columnLis.DisplayIndex=0;columnLis.Name="LisName";columnLis.SortMode=DataGridViewColumnSortMode.NotSortable;columnLis.DefaultCellStyle.Alignment=DataGridViewContentAlignment.MiddleLeft;columnLis.Width=135;this.dataGridView.Columns.Add(columnLis);你就把columnLis.HeaderText的值写成动态生成赋在一个字符串里columnLis.HeaderText=那个字符串就行了。
解决方案七:
引用楼主mznxbcv000的回复:
云计算与80年代“大型机-终端...Hadoop和云计算有什么关系?我如何来学习云计算技术?从哪...云计算在金融领域有哪些应用?云计算在生命科学领域有何应用?在数据库中,每条记录都有一个【登陆时间】,格式为:yyyy/mm/dd。现在在页面上输入【开始时间】和【结束时间】,对每个月的记录进行统计。要求标题列根据页面上输入的时间范围进行动态生成。比如,页面上输入:【开始……
无非就是一个行列转换的问题去找个犀利SQL语句就搞定了
解决方案八:
闲着没事,给你写个吧..
解决方案九:
你参照这个,写个动态,就OK了,都是一些字符串的拼接DECLARE@StartDateDATETIMEDECLARE@EndDateDATETIMEDECLARE@TableTABLE(UserNameVARCHAR(6),AmountNUMERIC(8,2),LoginTimeDATETIME)DECLARE@inINTINSERTINTO@Table(UserName,Amount,LoginTime)SELECT'张三',10,'2011-10-1014:20:30'UNIONALLSELECT'张三',50,'2011-11-1214:20:30'UNIONALLSELECT'张三',80,'2011-11-1310:20:30'UNIONALLSELECT'张三',90,'2011-11-1416:30:30'UNIONALLSELECT'李四',100,'2011-10-0614:20:30'UNIONALLSELECT'李四',110,'2011-10-1914:20:30'SET@StartDate='2011-10-01'SET@EndDate='2011-12-01'SET@in=DATEDIFF(MM,@StartDate,@EndDate);WITHListAS(SELECTCONVERT(VARCHAR(7),DATEADD(MM,T.number,@StartDate),120)AS[Date]FROM(SELECTDistinctnumberFROMmaster.dbo.spt_valuesWHEREnumber<=@inANDnumber>=0)T)SELECTT.UserName,SUM(CASEWHENList.Date='2011-10'THENT.AmountELSE0END)AS[2011-10],SUM(CASEWHENList.Date='2011-11'THENT.AmountELSE0END)AS[2011-11],SUM(CASEWHENList.Date='2011-12'THENT.AmountELSE0END)AS[2011-12]FROMListRIGHTJOIN@TableTONCONVERT(VARCHAR(7),T.LoginTime,120)=List.DateGROUPBYT.UserName/*(6行受影响)UserName2011-102011-112011-12-----------------------------------------------------------------------------------------------------------------------------李四210.000.000.00张三10.00220.000.00(2行受影响)*/