在 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;
我有这样的数据:
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;