单输出为2 sql查询

时间:2014-11-29 13:43:56

标签: sql sql-server-2012

我有一张表Transactions

Date1          CardID     AverageBalance       TotalBalance
-----------------------------------------------------------
28-11-2013      12345         600                1200
27-11-2013      12345         100                200
26-11-2013      12345         200                400
25-11-2013      12345         300                400

从上表中我需要以这样一种方式获得输出,即2013年11月28日的平均余额大于前几天,即27,26& 11月25日和我取出过去2天平均值的方式是我计算接下来几天的总余额,不包括2014年11月28日,并检查平均值是否大于平均值的三倍;前一天的交易

SELECT AverageBalance
FROM Transactions (nolock)
WHERE CardId = '12345'
  AND DATE1 = '2014-11-28 ') >
SELECT 
     (SELECT SUM(TotalBalance)
      FROM Transactions (nolock)
      WHERE CardId = '12345'
        AND DATEDIFF(DAY, Date1, '2014-11-28') >= 1) * 3)

请告诉我如何获得所需的输出

1 个答案:

答案 0 :(得分:1)

让我关注一下:" 2013年11月28日的平均余额大于前几天,即27,26& 11月25日和#34;否则,这个问题对我来说没有多大意义。

我无法判断您是否想要前两天或全天。在前两天,您将使用lag()

select t.*
from (select t.*,
             lag(averagebalance) over (partition by cardid order by date) as ab1,
             lag(averagebalance, 2) over (partition by cardid order by date) as ab2
      from transactions t
     ) t
where t.averagebalance > ab1 and t.averageblance > ab2;
相关问题