Получить одну строку из нескольких строк - PullRequest
0 голосов
/ 23 декабря 2019

Просто почесать голову в течение нескольких дней для простого, но невозможного мной :(. У меня есть таблица, подобная этой

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

Такесли есть несколько отделов, это все отделы. Пожалуйста, сообщите

Ответы [ 3 ]

2 голосов
/ 23 декабря 2019

Вы можете группировать по 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 голос
/ 23 декабря 2019

Вы можете использовать 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

Обновление:

Скрипка SQL: http://sqlfiddle.com/#!18/24f56/2

0 голосов
/ 31 декабря 2019

Мой общий подход такой:

select server, domain, uniqueid,
       (case when min(department) = max(department)
             then min(department)
             else 'Multiple'
        end) as department
from t
group by server, domain, uniqueid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...