下面一句SQL代码可以解决楼主的需求:
SELECT YEAR(T日期) AS 年份, MONTH(T日期) AS 月份, A客户编码, A客户名称, SUM(T销售额) AS 当月销售额, SUM(T回款额) AS 当月回款额, SUM(T开票金额) AS 当月开票金额 FROM (SELECT 客户编码,销售额,0 AS 回款额,0 AS 开票金额 ,销售日期 AS 日期 FROM 销售信息 UNION ALL SELECT 客户编码,0,回款额,0 ,回款日期 FROM 回款信息 UNION ALL SELECT 客户编码,0,0,开票金额 ,开票日期 FROM 发票信息)T, 客户档案 A WHERE A客户编码=T客户编码 GROUP BY A客户编码, A客户名称, YEAR(T日期), MONTH(T日期) ORDER BY YEAR(T日期), MONTH(T日期), A客户编码
如果那四张表中的数据如提问中附图所示,那么返回结果集如下图所示
上机试一试吧
先把数据库中的年月日读取出来绑定到用来给用户选择的控件上,比如dropdownlist,然后编写dropdownlist的初始化代码
protected void Page_Load(object sender, EventArgs e)
{
string sqlstr = "server=(local);uid=sa;pwd=000;Database=MilkTea";
string cmdstr = "select from[article]";
SqlConnection conn = new SqlConnection(sqlstr);
DataSet ds = new DataSet();
dsClear();
connOpen();
SqlDataAdapter da = new SqlDataAdapter(cmdstr, conn);
daFill(ds);
connClose();
if (dsTables[0] != null)
{
DropDownList1DataSource = dsTables[0]DefaultView;
DropDownList1DataValueField = "pubtime";
DataBind();
DropDownList1ItemsInsert(0, new ListItem("--请选择--", ""));
}
}
然后再编写dropdownlist的selectedindexchanged方法
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string sqlstr = "server=(local);uid=sa;pwd=000;Database=MilkTea";
string cmdstr = "select from[article]";
SqlConnection conn = new SqlConnection(sqlstr);
DataSet ds = new DataSet();
dsClear();
connOpen();
SqlDataAdapter da = new SqlDataAdapter(cmdstr, conn);
daFill(ds);
connClose();
if (dsTables[0] != null)
{
GridView1DataSource = ds;
DataBind();
}
}
以上代码我调试过是可以用的~有什么地方你在问
乍看难点是本月日期提取,下面是代码
Private Sub Button1_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Button1ClickDim date_start As Date = DateTimePicker1ValueYear & "-" & DateTimePicker1ValueMonth '本月的开始日期(包含)
Dim date_end As Date = DateTimePicker1ValueYear & "-" & DateTimePicker1ValueMonth
date_end = date_endAddMonths(1) '本月的终止日期(不包含)
Dim str As String = "selcet from 数据表 where 日期>=#" & date_start & "# and 日期<#" & date_end & "#" '这里是查询表达式
End Sub
字段类型NCHAR吧
代码:
连接好数据库
rsaddnew
rs("月字段")=m
rs("号字段")=d
rsupdate
把字段的类型设为日期时间型而不是字符串型,它就会自动转为标准的日期格式,而且这样做的好处是可以直接对字段进行时间的加减和大小比较等,可大大提高效率。
如果你仍然想用字符型,那么可以运行一下下面的SQL命令,运行一次即可:
update 表名 set 字段名=format(cdate(字段名),'yyyy-mm-dd')
也用不着存储过程啊,直接运行下边
with t as(select number rn from masterspt_values where type='p')
select
convert(varchar(7),dateadd(month,rn,CAST('2015-01-01' as datetime)),120) from t where
dateadd(month,rn,CAST('2015-01-01' as datetime))<=CAST('2015-12-31' as datetime)
以上就是关于Access数据库中如何建立查询,得到每月的销售,回款和发票信息全部的内容,包括:Access数据库中如何建立查询,得到每月的销售,回款和发票信息、c#中获取数据库中相应的年月在Gridview显示、vb.net +access数据库 一个月内的某段数据查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)