2013-09-16 106 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