简单的几天就挠头了,但是我不可能:(。我有这样的桌子
Server | Domain | Department |UniqueID
--------------------------------------
A | abc | HR | 123
A | abc | Acc | 123
A | abc | Other | 123
B | efg | HR | 456
C | efg | Acc | 789
我想要这样的输出
Server | Domain | Department |UniqueID
----------------------------------------
A | abc | All Dept | 123
B | efg | HR | 456
C | efg | Acc | 789
因此,如果有多个部门,则为“所有部门”。 请指教
答案 0 :(得分:2)
您可以按Server ,Domain,UniqueID
分组,然后使用if count > 1 then All Dept
select
Server ,Domain,case when count(1) > 1 then 'All Dept' else min(Department) end as Department,UniqueID
from T
group by Server ,Domain,UniqueID
答案 1 :(得分:1)
您可以使用GROUP BY
和聚合函数COUNT()
来获得结果。
SELECT
Server,
Domain,
CASE WHEN Count(UniqueID) > 1 THEN 'All Dept' ELSE MIN(Department) END as 'Department',
UniqueID
FROM Dept
GROUP BY Server, Domain, UniqueID
更新:
答案 2 :(得分:0)
我的一般方法是这样的:
a = ::f(a);