gpt4 book ai didi

sql - Oracle 中的数据透视表?

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:38 25 4
gpt4 key购买 nike

我有一个包含许多列的表,用于指定错误是否有效。我需要以这样一种方式输出:将错误指定为行的列名称以及每个错误的有效和无效字段的计数。

下面类似输入和预期输出的示例

id   name            txn_column_name  flag1 flag2 flag3 
1 Resident Count resident_ct Y Y N
2 Incident Count incident_ct Y Y Y
3 Facility Status facil_stat N N N

需要输出

Col1_name Y_Count    N_Count
flag1 2 1
flag2 2 1
flag3 1 2

最佳答案

我们可以在这里尝试使用 Oracle 的 UNPIVOT 运算符:

SELECT
flag AS Col1_name,
COUNT(CASE WHEN val = 'Y' THEN 1 END) AS Y_Count,
COUNT(CASE WHEN val = 'N' THEN 1 END) AS N_Count
FROM yourTable
UNPIVOT
(
val FOR (flag) IN (
flag1 AS 'flag1',
flag2 AS 'flag2',
flag3 AS 'flag3'
)
)
GROUP BY
flag
ORDER BY
flag;

Demo

另一个直接的选择是使用一系列联合:

SELECT
'flag1' AS Col1_name,
COUNT(CASE WHEN flag1 = 'Y' THEN 1 END) AS Y_Count,
COUNT(CASE WHEN flag1 = 'N' THEN 1 END) AS N_Count
FROM yourTable
UNION ALL
SELECT 'flag2', COUNT(CASE WHEN flag2 = 'Y' THEN 1 END),
COUNT(CASE WHEN flag2 = 'N' THEN 1 END)
FROM yourTable
UNION ALL
SELECT 'flag3', COUNT(CASE WHEN flag3 = 'Y' THEN 1 END),
COUNT(CASE WHEN flag3 = 'N' THEN 1 END)
FROM yourTable
ORDER BY 1;

Demo

关于sql - Oracle 中的数据透视表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52619399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com