SQL 根据中断值计算行数

SQL Counting Rows based on break values

我经常需要在 SQL 服务器上做一些我不知道如何正确做的事情。

基本上,如果我有一个 table #sample 是这样的:

DEPARTMENT DATE
ACCOUNTING A
FINANCE A
PAYROLL A
ACCOUNTING B
PAYROLL A
FINANCE A
PAYROLL B
PAYROLL C

我需要查询 table 以获得这样的输出:

DEPARTMENT DATE DUPECHECK
ACCOUNTING A 1
ACCOUNTING B 2
FINANCE A 1
FINANCE A 1
PAYROLL A 1
PAYROLL A 1
PAYROLL B 2
PAYROLL C 3

在我以前的工作中,在 Oracle Hyperion Brio 中,我曾经为每一行创建一个值为 1 的列,并在该列上编写一个函数 Cume,其中包含我需要计算的列的中断值。

在 Excel 中,我可以创建一个包含我的分隔值的串联列,然后执行 countif(concat:concat,concat1) 复制该公式。

我觉得应该和这个差不多,但完全不是这样:

ROW_NUMBER() OVER (PARTITION BY #sample.Department ORDER BY #sample.Date) DUPECHECK

帮帮我?

如上面的评论所述,ROW_NUMBER() 是 ranking functions.

集合的一部分

为了您的目的,您可以使用 DENSE_RANK():

DENSE_RANK() OVER(PARTITION BY #sample.Department ORDER BY #sample.Date)DUPECHECK