如果值为双精度,则返回 SQL



我有一个关于如何验证当其他列满足条件时一行是否加倍的问题。 该表如下所示:

Type   Name    ID    Am
O      Name1   1234  1
O      Name1   1235  1
O      Name1   4569  2
X      Name2   1234  1
X      Name2   4569  2
C      name3   1234  1

对于类型 O,我在 Name1 下有 2 个 ID 表示相同的 Am = 1。 我想做一个查询,检查是否可以在相同的类型和名称和am值下找到多个ID,如果>1则返回,但忽略其余类型。

谢谢!

试试这个

select type, name, am
from table
group by type, name, am
having count(*)>1

大多数 dbms 都支持 row_number,所以你可以使用这个

select * from
(
select *, row_number() over(partition by Type,Name,Am order by ID) as rn
from t
) t1 where t1.rn>1

您是否正在尝试检查类型/名称的组合是否具有多个 am 值?

㞖:

select type, name
from t
group by type, name
having min(am) <> max(am);

我会使用NOT EXISTS

SELECT t.*
FROM table t
WHERE EXISTS (SELECT 1 
FROM table t1 
WHERE t1.Type = t.Type AND t1.Name = t.Name AND t1.Am = t.Am AND t1.ID <> t.ID
);

最新更新