2013-09-16 102 views
1

我想寫一個查詢查詢表Z_INSUR。我想查找其中INSUR_TYPE爲M的同一EMP具有多於一行的所有實例。我想查看所有執行此操作的EMP,這就是爲什麼我將UNIQUE部分添加到查詢中的原因。以下是我到目前爲止所嘗試的,但它不起作用。有人可以幫我弄這個嗎?我使用的是Oracle查詢字段與多行SQL查詢

select UNIQUE(EMP) from Z_INSUR where COUNT(INSUR_TYPE = 'M') > 1; 
+0

'unique'(或'distinct')是*** *** NOT的函數。編寫'select unique(emp)'與編寫'select(emp)'相似 - paranthesises不起任何作用。 –

+0

@JoeEngle你的問題還不夠清楚,請在我的回答中考慮我的假設。 (寫這個,因爲你已經感謝Fabien了。在某些假設下,他的回答可能是錯誤的。) – fancyPants

回答

3
SELECT EMP 
FROM Z_INSUR 
WHERE INSUR_TYPE = 'M' 
GROUP BY EMP 
HAVING count(*) > 1; 
+0

工作,謝謝! –

1

我假設你想在同一個表有多個行,但不一定超過一個有INSUR_TYPE = 'M'一行中的每個EMP。

如果您想查看具有多個行的EMP,其中INSUR_TYPE = 'M'爲true,最好使用Fabien的解決方案。如果不是,他錯了,請考慮一下。

SELECT EMP 
FROM Z_INSUR 
GROUP BY EMP 
HAVING SUM(CASE WHEN INSUR_TYPE = 'M' THEN 1 ELSE 0 END) > 1; 
3

由於您沒有指定,我將假定您正在使用SQL Server。

select emp from z_insur where insur_type = 'm' group by emp having count(emp) > 1