客户表:tc_account(accout_id,account_money)
订单表:tc_contract(contract_id,account_id,retail_amount,start_date)
retail_amount-订单金额,start_date-订单日期一条客户记录有多条订单记录;我现在想计算每个客户的销售空间值(account_money)=去年1月1号到去年今天这个日期为止的销售额-今年1月1号到今天为止的销售额备注:这个 去年不仅仅指2009年,而是随着时间会变化的,例如到了2011年指的就是2010。
比如要算到今天为止每个客户的销售空间=(2009-01-01到2009-06-22为止每个客户的销售额)-(2010-01-01到2010-06-22为止每个客户的销售额)
订单表:tc_contract(contract_id,account_id,retail_amount,start_date)
retail_amount-订单金额,start_date-订单日期一条客户记录有多条订单记录;我现在想计算每个客户的销售空间值(account_money)=去年1月1号到去年今天这个日期为止的销售额-今年1月1号到今天为止的销售额备注:这个 去年不仅仅指2009年,而是随着时间会变化的,例如到了2011年指的就是2010。
比如要算到今天为止每个客户的销售空间=(2009-01-01到2009-06-22为止每个客户的销售额)-(2010-01-01到2010-06-22为止每个客户的销售额)
解决方案 »
- 鸟哥初问(+20):关于汇总查询
- ******************请问关于sql2005分区表和分区索引的问题*******************
- 仓库管理系统数据库表设计问题???
- 关于时间查询的问题
- 问问题啰!
- 关于备份数据库
- 请教:如何在三张表中取数据(再问)
- 关于服务器端和客户端通信的问题,急,请各位大虾帮忙
- "Select ID from AA where ID = @parmID" 当parmID等于何值时,该语句等效于"Select ID from AA "
- 求一个Sql语法错误(以union后结果进行分组查询)的原因及解决方法
- 求助!怎样查询出一个数据库中包含product字段的所有表。谢谢
- sql 查找 []里面的内容
select convert (nvarchar(10),dateadd(yy,-1,getdate()),120)
select convert(nvarchar(10), cast(ltrim( year(getdate()) ) as datetime),120)
select convert (nvarchar(10),getdate(),120)
;with LastYear as
(
select account_id
,SUM(retail_amount) as retail_amount_sum
from tc_contract
where start_date>=CAST(year(getdate())-1 as varchar(4))+'-01-01'
and start_date<=DATEADD(YY,-1,GETDATE())
group by account_id
)
,ThisYear as
(
select account_id
,SUM(retail_amount) as retail_amount_sum
from tc_contract
where start_date>=CAST(year(getdate()) as varchar(4))+'-01-01'
and start_date<=GETDATE()
group by account_id
)select a.account_id
,b.retail_amount_sum-a.retail_amount_sum
from ThisYear a
left join LastYear b
where a.account_id=b.account_id
,销售空间=(select sum(retail_amount) from tc_contract
where account_id=T.account_id
And start_date between convert(nvarchar(10), cast(ltrim( year(getdate())-1 ) as datetime),120)
And convert (nvarchar(10),dateadd(yy,-1,getdate()),120) )
-(select sum(retail_amount) from tc_contract
where account_id=T.account_id
And start_date between convert(nvarchar(10), cast(ltrim( year(getdate()) ) as datetime),120)
And convert (nvarchar(10),getdate(),120) )
From tc_contract T group by account_id