如何在oracle sql中显示行重复?[duplicate]

zd287kbt  于 2023-01-04  发布在  Oracle
关注(0)|答案(1)|浏览(106)
    • 此问题在此处已有答案**:

Oracle "Partition By" Keyword(6个答案)
2天前关闭。
我正在尝试为transaction表设计一个查询,该表的数据如下所示:
| 科室|雇员|交易日期|事件|
| - ------| - ------| - ------| - ------|
| 部门1|空1|二〇二二年五月二十日|阿布格德|
| 部门1|空1|二〇二二年五月二十日|ggg的|
| 部门1|空1|二〇二二年五月二十日|高密度纤维网|
| 部门2|恩普2| 2022年1月26日|三频双频|
| 部门2|恩普2| 2022年1月26日|国防部安全局|
| 部门2|恩普2| 2022年1月26日|小行星554|
| 部门2|恩普2| 2022年1月26日|gg32|
| 部门2|恩普2| 2022年1月26日|fd4gfg|
我想列出count为每个事件重复Dept + Employee + TransactionDate的次数,如下所示:
| 科室|雇员|交易日期|事件|计数|
| - ------| - ------| - ------| - ------| - ------|
| 部门1|空1|二〇二二年五月二十日|阿布格德|三个|
| 部门1|空1|二〇二二年五月二十日|ggg的|三个|
| 部门1|空1|二〇二二年五月二十日|高密度纤维网|三个|
| 部门2|恩普2| 2022年1月26日|三频双频|五个|
| 部门2|恩普2| 2022年1月26日|国防部安全局|五个|
| 部门2|恩普2| 2022年1月26日|小行星554|五个|
| 部门2|恩普2| 2022年1月26日|gg32|五个|
| 部门2|恩普2| 2022年1月26日|fd4gfg|五个|
我正在寻找一种方法来获得预期的看法。如果有可能与一个单一的sql查询?
任何指示都将受到赞赏。

ndasle7k

ndasle7k1#

使用COUNT分析函数:

SELECT t.*,
       COUNT(*) OVER (PARTITION BY Dept, Employee, TransactionDate) AS cnt
FROM   table_name t

其中,对于示例数据:

CREATE TABLE table_name (Dept, Employee, TransactionDate, Event) AS
SELECT 'dept1', 'emp1', DATE '2022-05-20', 'abgd' FROM DUAL UNION ALL
SELECT 'dept1', 'emp1', DATE '2022-05-20', 'ggg' FROM DUAL UNION ALL
SELECT 'dept1', 'emp1', DATE '2022-05-20', 'hdfh' FROM DUAL UNION ALL
SELECT 'dept2', 'emp2', DATE '2022-01-26', '3fdfds' FROM DUAL UNION ALL
SELECT 'dept2', 'emp2', DATE '2022-01-26', 'dsfsd' FROM DUAL UNION ALL
SELECT 'dept2', 'emp2', DATE '2022-01-26', '554fsds' FROM DUAL UNION ALL
SELECT 'dept2', 'emp2', DATE '2022-01-26', 'gg32' FROM DUAL UNION ALL
SELECT 'dept2', 'emp2', DATE '2022-01-26', 'fd4gfg' FROM DUAL;

输出:
| 部门|雇员|交易日期|事件|碳纳米管|
| - ------| - ------| - ------| - ------| - ------|
| 部门1|空1| 2022年5月20日00时00分|阿布格德|三个|
| 部门1|空1| 2022年5月20日00时00分|高密度纤维网|三个|
| 部门1|空1| 2022年5月20日00时00分|ggg的|三个|
| 部门2|恩普2| 2022年1月26日00时00分|gg32|五个|
| 部门2|恩普2| 2022年1月26日00时00分|小行星554|五个|
| 部门2|恩普2| 2022年1月26日00时00分|国防部安全局|五个|
| 部门2|恩普2| 2022年1月26日00时00分|fd4gfg|五个|
| 部门2|恩普2| 2022年1月26日00时00分|三频双频|五个|
fiddle

相关问题