我正在try 使用ROW_NUM()来获取只有一个关联注释值的ID实例,就像‘Send Final’一样,仅此而已.

以下是表中记录的示例:

Comment ID
SEND Final 1
SEND Draft 1
SEND Final 2
SEND Draft 2
SEND Final 3

运行我的代码(在OUTPUT表下面)后,我希望返回它,因为它是表中唯一只有一个注释实例的记录,该实例类似于‘Send Final’(没有与ID关联的类似于‘Send Draft’的记录/值).

Comment ID
SEND Final 3

下面是我现在所拥有的,它成功地按照我想要的方式进行分区,但是我在 Select 符合我的标准的记录的逻辑上遇到了麻烦.

SELECT *, 
   ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) Row_num
FROM Mytable
GROUP BY Comment, ID
ORDER BY ID ASC

我做了一个dbfiddle与一些测试数据和代码.发现Here

任何帮助都是非常感谢的,或者如果我做错了,请让我知道!

推荐答案

当你想要count的时候,你不确定为什么你要用row_number

WITH cte AS (
    SELECT
        Comment,
        ID,
        COUNT(*) OVER (PARTITION BY ID) count_num
   FROM Mytable
)
SELECT *
FROM cte
WHERE count_num = 1
-- Maybe the following line is required? The sample data isn't clear on that
AND Comment = 'SEND Final';

Sql相关问答推荐

用于平均多个数据并与一个数据点进行比较以判断偏移量的SQL查询

数据库索引:如何使用名称和类别对项目进行最佳索引?

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

如何在SQL中按每个子组的顺序更新数据?

对任何(数组)使用LIKE?

BigQuery-当子查询不返回任何结果时,所有结果为零

雅典娜嵌套Json提取液

SQL Athena/prest判断值是否在嵌套的json数组中

SQL:查询作为子查询或CTE写入的最大和数失败

提取连续时间戳范围的SQL

SQL中相同表内的VLOOKUP等价

在同一列上迭代时计算持续时间

POSTGRES to_timestamp() 假定 UTC 字符串为本地时间

Postgresql 生成器列导致语法错误

使用多个数据库调用重载 CQRS 模式

在 SQL Server 中查找重复项

REGEXP_SUBSTR使用方法

将 MERGE 语句与 Oracle PL/SQL 表类型一起使用时,导致无效数据类型错误的原因是什么?

具有日期时间条件的存储过程

查找距上一条记录大于或等于 30 天的记录