我真的不确定最好的解释方法,但我们有一个数据库,每个员工都有一个唯一的ID,描述和当前的标志。
SELECT COUNT("Current_Flag"),
"Employee_Number"
FROM "Employment_History"
WHERE "Current_Flag" = 'Y'
GROUP BY "Employee_Number" ;
我正在尝试为每个设置了两个当前标志的情况返回唯一ID,但我甚至不知道从哪里开始。我已经尝试了一个不起作用的子选择,我确定答案很简单,但我刚刚被告知我只有7分钟的时间去做,所以惊慌失措,以为我会问这里。对不起:/
答案 0 :(得分:3)
在当前查询中添加HAVING子句 - 如下所示:
select count("Current_Flag"),
"Employee_Number"
from "Employment_History"
where "Current_Flag" = 'Y'
group by "Employee_Number"
having count("Current_Flag") >= 2
(如果您只想完全 2匹配,请将条件更改为=2
。)
答案 1 :(得分:0)
尝试这样的事情(未经测试!)。您可能需要使用HAVING / COUNT来使其正常工作
SELECT unique_id, description, flag FROM table GROUP BY unique_id HAVING COUNT(unique_id) > 1
答案 2 :(得分:0)
select employee_name, count(employee_name) as cnt
group by employee_name
where cnt>1
我想这可以解决问题。使其适应数据库中的字段。
答案 3 :(得分:0)
自我连接表仅返回2个“标志”相似的行,排除与UniqueID匹配的行,返回ID在标志上匹配的实例。
Select A.ID
from table A
INNER JOIN table B
on A.Flag1=B.Flag1 and A.Flag2=B.Flag2
Where A.ID <> B.ID
答案 4 :(得分:0)
(未经证实的声明)
SELECT Id FROM TABLE1 T1 WHERE T1.Id NOT IN(
SELECT Id FROM TABLE2 T2 WHERE (T1.Flag1 = T2.Flag1) AND (T1.Id <> T2.Id))