2013-03-04 29 views
0

我有一個包含employeeID和SSN字段的表。我想用下面的性判據過濾掉所有記錄:查找具有單個SSN條目爲空或多個不相等的SSN條目的員工ID

有一個SSN進入誰的價值全體員工爲空

具有大於一個SSN進入

所有員工下圖顯示了三個場景

ID   SSN 
1   000000000 
1   NULL 

ID   SSN 
1   000000000 
1   111111111 

ID   SSN 
1   NULL 

下面是表的定義:我從Sybase數據庫中填入本表數據藤條

http://tinypic.com/r/65wvhi/6

感謝, 布拉德

+0

我認爲你應該正常化您的數據和該查詢將是一個容易得多.. – Scotch 2013-03-04 19:41:20

+0

不幸的是我對源數據沒有任何控制 – user1331734 2013-03-04 19:42:26

+0

你可以發佈你的模式,我不是真正理解你的示例數據。 – Scotch 2013-03-04 19:43:11

回答

2
select employeeID 
from YourTable 
group by 
     employeeID 
having count(case when SSN is null then 1 end) > 0 
     or count(distinct SSN) > 1 
1

你會使用聚合爲此,有having條款:

select e.id 
from ssns e 
group by e.id 
having (count(*) = 1 and count(ssn) = 0) or -- first condition 
     count(*) > 1 -- second condition 
相關問題