我想查找具有列A,B和C的相同值的表中的行。 C但列D的值不同。Oracle查询查找表中具有列A,B和C相同值但列D不同的行的行
我的意思是a列中的值对于A列是相同的,而B列中的值是相同的。等
如果你有一个雇员表,我需要与同一部门,同一主管员工行,不同的地点
我想查找具有列A,B和C的相同值的表中的行。 C但列D的值不同。Oracle查询查找表中具有列A,B和C相同值但列D不同的行的行
我的意思是a列中的值对于A列是相同的,而B列中的值是相同的。等
如果你有一个雇员表,我需要与同一部门,同一主管员工行,不同的地点
如果我猜中了:
select *
from YOUR_TABLE t
where (t.a is not null and t.a = t.b and t.b = t.c and t.a != t.d)
or (t.a is null and t.b is null and t.is null and t.d is not null)
如果这些列无效/可选,那么你可能想使用NVL或任何其他的NULL处理函数。由于一个NULL值不等于另一个。
如果你只是想找到哪个部门/主管组合有多个位置,那么你可以使用group by
和having
:
select department, supervisor, count(distinct location) as locations
from employee e
group by department, supervisor
having count(distinct location) > 1;
如果你想从在任何这些部门的,则行中的所有数据,您可能会使用作为子查询,但这意味着两次触击表。您可以使用,而不是一个解析数:
select id, department, supervisor, location
from (
select e.*,
count(distinct location)
over (partition by department, supervisor) locations
from employee e
)
where locations > 1
order by id;
...其中id
可以与你从基础表想要的任何字段来代替,或者完全省略,如果你只是想知道哪些位置都有涉及。
内部查询从表中获取原始数据,并在整个结果集中添加一个列,该列中具有该行中部门/主管的位置数(不同) - 这是分析部分。外部查询然后只是过滤掉那些只有一个位置的查询。
Quick SQL Fiddle demo带有组成数据。
如果您在问题中包含了实际的表格和示例数据,那对您来说会更有意义。
带子查询的查询适用于我。谢谢。 – OPost 2014-09-25 14:46:03
...'WHERE a = b AND b = c AND a <> d' – 2014-09-25 13:13:19
我的意思是a列中的值与a列中的值相同,b列中的值是相同的。等等。如果你有一个员工表,我需要有雇员拥有同一个部门,同一个主管,不同地点的行。 – OPost 2014-09-25 13:31:44
@OPost你应该在提供其他细节时编辑你的问题。我已经为你做了。请检查该更改。 – 2014-09-25 13:35:11