在 teradata sql 中转换 table

Pivot table in teradata sql

我有这样的数据:

ID      Result
1       value1
2       value1
2       value2
3       value1
4       value1
4       value2
4       value3

我如何在 teradata SQL 中完成枢轴 table,就像在 Excel.

中一样
ID Value1                    Value2                    ...  
1  count of Value1 for ID 1  count of Value2 for ID 1  ...
2  count of Value1 for ID 2  count of Value2 for ID 1  ...
3  ...                       ...                       ...

假设有大量 ID 和不同数量的值。

所以我找到了答案,我想和你分享 首先,您需要重新计算数据以了解 id||Value

的计数
CREATE TABLE myTable_count as (
SELECT ID, Result, count(1) as countOfResult
FROM myTable 
group by  ID, Result
) WITH DATA 

然后你可以做一个枢轴,但你必须知道结果的名称

 SELECT ID,
 sum(CASE WHEN  Result='Value1' then countOfResult else NULL END) Value1,
 sum(CASE WHEN  Result='Value2' then countOfResult else NULL END) Value2
 FROM myTable_count
 GROUP BY ID;

如果对您有帮助,请给个赞。

SELECT sum(case when Result='Value1' then ID end) "Value1"
     , sum(case when Result='Value2' then ID end) "Value2"
FROM your_table
GROUP BY null;

恐怕这里不能添加太多上下文,除了这是可以在 TD 中实现枢轴的方式,直到 v15.x

SELECT 
  id, 
  count(
    CASE WHEN result1 = 'value1' THEN id END
  ) AS value1, 
  COUNT(
    CASE WHEN result1 = 'value2' THEN id END
  ) AS value2, 
  COUNT(
    CASE WHEN result1 = 'value3' THEN id END
  ) as value3 
FROM 
  pivot_tb1 
group by 
  1;