标题:这是个在C#中遇到的SQL问题。
只看楼主
sjz_zdf
Rank: 2
等 级:论坛游民
帖 子:63
专家分:14
注 册:2008-6-22
结帖率:90.91%
已结贴  问题点数:30 回复次数:5 
这是个在C#中遇到的SQL问题。
   在sql数据库中有一表,有字段consumNum(数据类型:char),consumType(数据类型:char),consumMoney(数据类型:decimal),consumTime(数据类型:datetime).
   问题是怎么可以将consumMoney 下的数据根据consumType ,consumTime分组求和?举例如下:
        
                 consumNum          consumType          consumMoney       consumTime
                    001                儿童摄影           23               2010/1/1
                    002                儿童摄影           23               2010/1/2
                    003                婚纱摄影           500              2010/1/3
                    004                儿童摄影           23               2010/1/4

根据consumType,consumTime的月份分组计算出consumMoney的总和可以存在decimal类型的变量total中,如上所举例子,在一月份儿童摄影total=69.






搜索更多相关主题的帖子: 数据 儿童摄影 
2010-06-01 17:08
xueshui20
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:269
专家分:309
注 册:2009-4-19
得分:4 
Select consumType sum(consumMoney) from table group by consumType

如何是C#2008以上的版本的话,那你可以试试用LINQ来查询,
2010-06-02 08:38
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
得分:6 
select sum(consumMoney) from tempTable where consumTime between '2010-01-1' and '2010-01-31'  group by consumType
最好是加个时间的条件.
如不加条件,按你所说的按consumType和consumTime分组的话,那么我个人觉的还要对consumTime这字段进行处理



C#超级群 74862681,欢迎大家的到来!
2010-06-02 09:51
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
得分:6 
select consumType,sum(consumMoney) 总和,datepart(mm,consumTime) 月份 from tempTable
     group by consumType,datepart(mm,consumTime)

C#超级群 74862681,欢迎大家的到来!
2010-06-02 10:01
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
得分:6 
程序代码:
create table tempTable
(
    id int not null primary key identity(1,1),
    consumNum char(10) not null,
    consumType char(20) not null,
    consumMoney decimal not null,
    consumTime datetime not null
)
insert into tempTable(consumNum,consumType,consumMoney,consumTime)
    values('001','儿童摄影',23,'2010/1/1')
insert into tempTable(consumNum,consumType,consumMoney,consumTime)
    values('002','儿童摄影',23,'2010/1/2')
insert into tempTable(consumNum,consumType,consumMoney,consumTime)
    values('003','婚纱摄影',500,'2010/1/3')
insert into tempTable(consumNum,consumType,consumMoney,consumTime)
    values('004','儿童摄影',23,'2010/1/4')
insert into tempTable(consumNum,consumType,consumMoney,consumTime)
    values('005','儿童摄影',23,'2010/2/4')
select consumType,sum(consumMoney) 总和,datepart(mm,consumTime) 月份 from tempTable
     group by consumType,datepart(mm,consumTime)


select consumType,sum(consumMoney)总和 from tempTable where consumTime between '2010-01-01' and '2010-01-31 '  group by consumType

C#超级群 74862681,欢迎大家的到来!
2010-06-02 10:02
名沁
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:173
注 册:2009-4-5
得分:8 
楼上的很好。
我们假设原来的表名为Fm,要写入统计数据的表名为fm;在窗体里建两个datatimepicker、一个button和一个datagridview。
string sqlstr="Data Source=(local);Initial Catalog=Fm;Persist Security Info=True;User ID=sa;Password=";
SqlConnection con = new SqlConnection(sqlstr);
con.Open();
string comstr =" select consumType,sum(consumMoney) 总和,datepart(mm,consumTime)月份 into fm from Fm where consumTime between '"+"dateTimePicker1.Value"
+"' and '"+"dateTimePicker1.Value"+"'";
SqlCommand com = new SqlCommand(comstr, con);
com = new SqlCommand(comstr,con);
com.ExecuteNonQuery();
con.Close();
我也是新手,只是自己的思路,可能sql语句写的不准确。还请见谅!


[ 本帖最后由 名沁 于 2010-6-2 22:20 编辑 ]
2010-06-02 22:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-308942-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.131954 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved