根据ClientId动态更改查询的StartDate

时间:2014-10-21 16:41:30

标签: tsql

我想返回自当前广告订单(发票)开始以来为多个客户提供的每日支出总和。遗憾的是,每个客户端的当前广告订单的开始日期不同。

我没有任何问题来拉取每个客户端的开始日期,但我不知道如何创建一种查找到具有与每个客户端关联的开始日期的表。

假设我有一张表IO

ClientId StartDate  
1        2014-10-01  
2        2014-10-04  
3        2014-09-17
...

另一个表格,每个客户端都有DailySpend

Date          Client    Spend
2014-10-01    1         2325
2014-10-01    2         195
2014-10-01    3         434
2014-10-02    1         43624
...

现在,我只想检查每个客户从目前的订单开始日期到昨天我们花了多少钱。

2 个答案:

答案 0 :(得分:0)

select *
  from IO 
  join DailySpend 
    on IO.ClientId = DailySpend.Client 
   and DailySpend.Date <= IO.StartDate 
   and datediff(dd, getdate(), DailySpend.Date) <= 1

select DailySpend.Client, sum(DailySpend.Spend)
  from IO 
  join DailySpend 
    on IO.ClientId = DailySpend.Client 
   and DailySpend.Date >= IO.StartDate 
   and datediff(dd, getdate(), DailySpend.Date) <= 1
 group by DailySpend.Client

您可能需要在日期中翻转日期顺序

答案 1 :(得分:0)

可能是这样的

SELECT a.client,
       Sum(b.spend)
FROM   [IO] a
       JOIN DailySpend b
         ON a.id = b.id
         and a.startdate=>b.date
WHERE  b.date <= Dateadd(dd, -1, Cast(Getdate() AS DATE))
GROUP  BY client