加入来自两个不同查询的行

时间:2014-09-20 05:20:42

标签: sql join rows

我有一张表sales_table,其中包含ID,日期和销售字段。

  

没有日期的销售
  -------------------------------------------------- -
  1 - 扬万
  2 3-JAN 12500
  3 4月8000
  4 5-一月12000
  5 8月万
  “”“”“”“”“”“”“”“”“”“”“”“”“” “”“”“”为100 13-Mar 4000

日期是唯一的,但并不总是串联。 no是唯一的,并且与每个更高日期的递增no串联。

我希望获得当前和上一个日期的销售额之间的差异。

之类的东西
  

无   日期   销售   DIFF
  -------------------------------------------------- ----------------------------------------
1   1月   万   0
  2   3月   12500   2500
  3   4月   8000   -4500
  4   5月   12000   4000
  五   8月   万   -2000

我正在使用sql查询 -

select t1.no,t1.date,t1.sales (t1.sales-2.sales) as diff 
from sales_table as t1,sales_table as t2 
where(t1.no=t2.no+1) order by t1.date

除了我从第2号开始录音以外,这种方法很好。

所以我写了另一个sql查询 -

select no,date,sales,sales-sales as diff 
from sales_table 
where(no=1) 

输出为 -     1月1日,1月1日,10000日。

如何从这两个查询中加入行?

1 个答案:

答案 0 :(得分:0)

根据您的数据库,有几种不同的选项。一种选择是修改现有查询以使用OUTER JOIN

select t1.no,t1.date,t1.sales,(t1.sales-coalesce(t2.sales,t1.sales)) as diff 
from sales_table as t1
    left join sales_table as t2 on t1.no=t2.no+1
order by t1.date