从单个表中选择两个日期相同值的差异

时间:2014-07-10 15:22:13

标签: sql

我有一个选择不同列的选择查询,对于一列,我必须从今天和上一年末的表中获取值,并且应该采取差异。假设此表每天存储值,假设它为X.

select a
       b
       c
       d
       e

e= ( SELECT VALUE FROM X WHERE DATE='TODAY') MINUS ( SELECT VALUE FROM X WHERE DATE='PREVIOUS YEAR END') i.e 31-dec-2013

有人可以告诉我逻辑如何在单个选择查询中选择与不同日期相同的值

1 个答案:

答案 0 :(得分:0)

更新

重新阅读编辑后,您似乎想要使用子选择来获取e。在这种情况下,你的选择具有相同的逻辑去解决EOY去年。

( SELECT VALUE FROM X WHERE DATE=getdate()) - 
( SELECT VALUE FROM X WHERE DATE=DATEADD(yy, DATEDIFF(yy,0,getdate()), -1))

我在下面的原始答案使用了一个表并自行加入。


你可以这样做。只需在where where子句中指定日期。 jointhe date链接到EOY date last year

select 
    a.date as 'aDate',
    a.value as 'aValue',
    b.value as 'lastEOYValue',    
    a.value - b.value as 'Diff'
  from x a
  join x b 
    on b.date = DATEADD(yy, DATEDIFF(yy,0,a.date), -1) --links EOY last year

SQL Fiddle Example HERE