我想转动我的数据,我知道我们在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天的数据。
感谢您的帮助。
答案 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;