有没有一种方法可以根据不同于两个来填充列?

Is there a way to populate a column based on distinct from two?

我正试图在 oracle 中实现类似的功能。我知道 excel 中有一个函数,例如 =IF(SUMPRODUCT(($A$2:$A2=A2)($B$2:$B2=B2))> 1,0,1)* 可以根据 2 的不同组合填充列。在 oracle 中也可以这样做吗?原因是,在 excel 中,我有大约 110K 条带字符串的记录,因此再次使用此公式作为数据中心来填充列的操作非常缓慢 re-calculates 它。

此外,当我们将数据导出到 excel 时,我们可以使用 pivot > sum of those 3 rd column 查看不同的计数,按第 1 组分组。

使用简单的ROW_NUMBER解析函数:

WITH data (class, name) AS (
    SELECT 'Class1', 'James' FROM DUAL UNION ALL
    SELECT 'Class1', 'Sara' FROM DUAL UNION ALL
    SELECT 'Class1', 'Alan' FROM DUAL UNION ALL
    SELECT 'Class1', 'Sara' FROM DUAL UNION ALL
    SELECT 'Class2', 'Cheryl' FROM DUAL UNION ALL
    SELECT 'Class2', 'Cheryl' FROM DUAL UNION ALL
    SELECT 'Class2', 'Cheryl' FROM DUAL UNION ALL
    SELECT 'Class3', 'Alice' FROM DUAL UNION ALL
    SELECT 'Class3', 'Flora' FROM DUAL UNION ALL
    SELECT 'Class3', 'Franklin' FROM DUAL UNION ALL
    SELECT 'Class3', 'Nicol' FROM DUAL UNION ALL
    SELECT 'Class3', 'Franklin' FROM DUAL UNION ALL
    SELECT 'Class4', 'Bess' FROM DUAL UNION ALL
    SELECT 'Class4', 'Lucy' FROM DUAL UNION ALL
    SELECT 'Class4', 'William' FROM DUAL UNION ALL
    SELECT 'Class4', 'Bess' FROM DUAL UNION ALL
    SELECT 'Class4', 'Lucy' FROM DUAL
)
SELECT
    data.*,
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY class, name ORDER BY ROWNUM) = 1 THEN 1 ELSE 0 END helper
FROM
    data
ORDER BY
    ROWNUM