希望有人可以幫助我。我不擅長 SQL。
我想獲取在美國和英國(英格蘭/蘇格蘭)都有地址的員工名單
| 員工 | 地址 |
|---|---|
| Emp1 | 英國 |
| Emp1 | 英國 |
| Emp1 | 蘇格蘭 |
| Emp2 | 我們 |
| Emp2 | 我們 |
| Emp2 | 加拿大 |
| Emp3 | 蘇格蘭 |
| Emp3 | 我們 |
| Emp3 | 蘇格蘭 |
| Emp3 | 我們 |
| Emp3 | 印度 |
可以有多個國家,但我只想關注美國和英國(包括英格蘭和蘇格蘭)。
uj5u.com熱心網友回復:
您可以將表與自身連接起來(美國一個實體,英國一個實體)以查找您想要的行。例如:
select distinct us.employee
from t us
join t uk on uk.employee = us.employee
where us.address = 'US'
and uk.address in ('England', 'Scotland')
或者,您可以使用EXISTS過濾掉行。
uj5u.com熱心網友回復:
;WITH agg(employee, i) AS
(
SELECT Employee, CASE
WHEN Address = 'US' THEN 1
WHEN Address IN ('England', 'Scotland') THEN 3
ELSE 2 END
FROM dbo.YourTableName
)
SELECT Employee
FROM agg
GROUP BY Employee
HAVING MAX(i) - MIN(i) = 2;
uj5u.com熱心網友回復:
使用聚合這非常簡單。
Select Employee
from YourTable
where Address in ('England', 'Scotland')
group by Employee
having count(distinct Address) = 2
uj5u.com熱心網友回復:
您可以使用 IN 找出在美國和英國都有地址的員工,如下所示。
declare @tbl table(emp varchar(20),address varchar(20))
insert into @tbl
values('Emp1','England'),('Emp1','Scotland'),('Emp2','US'),('Emp3','US')
,('Emp3','Scotland')
select emp
from
@tbl where address = 'US'
and emp in
(
select emp
from
@tbl
where
address = 'Scotland' or address = 'England')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454326.html
上一篇:我可以在Xamarin-xaml中使用什么快捷方式進行評論?
下一篇:如何根據2列找到三倍的值
