Date Calcs,可能使用分区/行功能

时间:2018-04-24 14:17:33

标签: sql if-statement case teradata

我有一张包含发票级别数据的表格,我有一个业务请求来创建一个表格,其中包含要授予销售代表的新业务资金。

这是逻辑:

  1. 如果在过去6个月内未向该客户进行任何销售,或者如果客户是新客户(表中未存在),则将销售视为“新业务”。
  2. 新商业信贷将在首次排位“新业务”销售后的3个月内持续。
  3. 表结构(为简单起见)

     Customer # - Invoice # - Invoice Dt - Total $$
    

    听起来很简单,但我在sql中构建它时遇到了一些麻烦。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

一步一步

之前的客户(超过3个月但不到6个月)

 SELECT CustomerNo
 FROM TABLE_NAME_YOU_DID_NOT_TELL_US
 WHERE InvoiceDt > CURRENT_DATE - 6 MONTHS -- newer than 6 months
   AND InvoiceDt < CURRENT_DATE - 3 MONTHS -- older than 3 months

现在采取过去3个月内不包含这些内容的所有内容

 CREATE VIEW NEW_CUSTOMERS AS 

 SELECT *
 FROM TABLE_NAME_YOU_DID_NOT_TELL_US
 WHERE InvoiceDt > CURRENT_DATE - 3 MONTHS -- newer than 3 months
  AND CustomerNo NOT IN (
   SELECT CustomerNo
   FROM TABLE_NAME_YOU_DID_NOT_TELL_US
   WHERE InvoiceDt > CURRENT_DATE - 6 MONTHS -- newer than 6 months
     AND InvoiceDt < CURRENT_DATE - 3 MONTHS -- older than 3 months
 )

您也可以通过加入来完成此操作。