大家看看这个SQL如何写~! ( 积分: 100 )

  • 主题发起人 主题发起人 waterxbottle
  • 开始时间 开始时间
W

waterxbottle

Unregistered / Unconfirmed
GUEST, unregistred user!
现假设有这样一个数据库,字段有三个:
Pro_Id 商品代码
Pro_Date 销售日期
Pro_Amt 销售金额
现在要写这样一个查询,给定一个日期(2007-01-01),要查出每个商品在今天和去年同期(2006-01-01)的销售金额:
即Pro_Id Pro_Amt(2007-01-01) Pro_Amt(2006-01-01)
两个日期的销售金额要同时显示出来,如何写,请各位大虾指教,先谢了~
 
这个问题再补充一点,在指定一个时间段(如2007-01-01至2007-01-05)也可以正常跑出正确的数据。
 
假设表名为:Sale,数据库为SQL Server
select a.Pro_ID,a.Amt as CurrYearAmt,ISNULL(b.Amt,0) as PreYearAmt
from Sale a LEFT JOIN Sale b ON a.Pro_ID = b.Pro_ID and
a.Pro_Date = convert(char(10),DateAdd(Year,1,convert(datetime,b.Pro_Date)),120)
where a.Pro_Date >= '开始日期' and a.ProDate <= '结束日期'
 
select a.Pro_ID,a.Pro_Amt,b.Pro_Amt from Table1 as a,(select Pro_ID,Pro_Amt from Table1 where Pro_Amt='条件')as b where a.Pro_ID=b.Pro_ID
 
select a.Pro_Id,a.Pro_Amt,b.Pro_Amt_Old from
(select Pro_Id ,Pro_Amt from table where Pro_Date >=:date1 and Pro_Date <=:date2)
left join
(select Pro_Id ,Pro_Amt as Pro_Amt_Old from table where Pro_Date >=:date3 and Pro_Date <=:date4)
on a.Pro_Id=b.Pro_Id

//date1,date2是今年查找日期间隔
//date3,date4是去年的
//做为四个参数
//日期的计算你可以放到程序里
 
各位大虾们,偶的数据库是Sybase的,格式好像有点不对哦!
 
本公司诚聘软件工程师数名,要求大专以上学历,计算机专业,熟练掌握DELPHI+SQL编程,能开发C/S 或B/S结构的应用软件,二年以上工作经验,有在软件公司工作经验优先考虑。有意者请联系QQ419682853邮箱:ljy42af@gdou.com
 
假设表名为:Sale,数据库为SQL Server
select a.Pro_ID,a.Amt as CurrYearAmt,ISNULL(b.Amt,0) as PreYearAmt
from Sale a LEFT JOIN Sale b ON a.Pro_ID = b.Pro_ID and
a.Pro_Date = convert(char(10),DateAdd(Year,1,convert(datetime,b.Pro_Date)),120)
where a.Pro_Date >= '开始日期' and a.ProDate <= '结束日期'
 
同意楼上
 
select a.Pro_ID,a.Amt as CurrYearAmt,ISNULL(b.Amt,0) as PreYearAmt
from Sale a LEFT JOIN Sale b ON a.Pro_ID = b.Pro_ID and
a.Pro_Date = convert(char(10),DateAdd(Year,1,convert(datetime,b.Pro_Date)),120)
where a.Pro_Date = '2007-01-01' and a.ProDate = '2006-01-01'
 
用四个日期参数最简单,而且不会产生语法的问题

表用tb_Sale
select a.Pro_id,sum(a.Pro_Amt) as Pro_Curr,sum(B.Pro_Amt) as Pro_Pre from
tb_Sale a,tb_Sale b where a.Pro_Id=b.Pro_Id and a.Pro_Date>='日期1' and a.Pro_Date<='日期2' and b.Pro_Date>='日期3' and b.Pro_Date<='日期3'
 
后退
顶部