2014-09-25 113 views
0

我想查找具有列A,B和C的相同值的表中的行。 C但列D的值不同。Oracle查詢查找表中具有列A,B和C相同值但列D不同的行的行

我的意思是a列中的值對於A列是相同的,而B列中的值是相同的。等

如果你有一個僱員表,我需要與同一部門,同一主管員工行,不同的地點

+3

...'WHERE a = b AND b = c AND a <> d' – 2014-09-25 13:13:19

+0

我的意思是a列中的值與a列中的值相同,b列中的值是相同的。等等。如果你有一個員工表,我需要有僱員擁有同一個部門,同一個主管,不同地點的行。 – OPost 2014-09-25 13:31:44

+0

@OPost你應該在提供其他細節時編輯你的問題。我已經爲你做了。請檢查該更改。 – 2014-09-25 13:35:11

回答

0

如果我猜中了:

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) 
0

如果這些列無效/可選,那麼你可能想使用NVL或任何其他的NULL處理函數。由於一個NULL值不等於另一個。

0

如果你只是想找到哪個部門/主管組合有多個位置,那麼你可以使用group byhaving

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帶有組成數據。

如果您在問題中包含了實際的表格和示例數據,那對您來說會更有意義。

+0

帶子查詢的查詢適用於我。謝謝。 – OPost 2014-09-25 14:46:03

相關問題