TD中的PIVOT实施

时间:2018-04-19 09:25:11

标签: pivot teradata

我想转动我的数据,我知道我们在teradata 16中有Pivot功能。 我不知道如何使用它。我知道其他方法,如max(case ...),但我的数据集很大,所以我无法使用它。

有谁能告诉我如何在这里使用数据透视:

factor = Exp(- 0.007 * Abs(deltaX))
this.newX = this.currentX + (e.deltaX * factor);

想要像

这样的数据
SERV_PROVIDER_ID    CALL_START_DT   cnt1    
50003                  4/15/2018    25,117  
50003                  4/16/2018    65,630  
50003                  4/17/2018    63,880  
50003                  4/18/2018    40,080  

我只是在寻找4天的数据。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

当知道这四个日期时:

SELECT *
FROM mytab
PIVOT
 ( Sum(cnt1) 
   FOR CALL_START_DT
    IN (DATE'2018-04-15'
       ,DATE'2018-04-16'
       ,DATE'2018-04-17'
       ,DATE'2018-04-18'
       )
 ) AS dt;

但是您的预期结果看起来好像是动态地想要那些日子:

WITH cte AS 
 (
   SELECT t.*,
      Row_Number()
      Over (PARTITION BY SERV_PROVIDER_ID
            ORDER BY CALL_START_DT) AS rn
   FROM mytab AS t
 )
SELECT * 
FROM cte
PIVOT
 ( Min(CALL_START_DT) AS CALL_START_DT,
   Sum(cnt1) AS Cnt
   FOR rn
    IN (1 
       ,2
       ,3
       ,4
       )
 ) AS dt;