sql Query Issue - PullRequest
       5

sql Query Issue

0 голосов
/ 31 октября 2009

У меня есть таблица, как показано ниже

Q_ID  DeptID  EmployeeName   City
100   100       testest      abcd
100   101         tata        cdd

с 100K записей. Мне нужен запрос, который должен получить все записи с одинаковым Q_ID, но с другим DEPTID.

Пожалуйста, помогите.

Спасибо

Ответы [ 2 ]

5 голосов
/ 31 октября 2009

Присоединяйся к себе:

SELECT t1.*, t2.DeptID
FROM [MyTable] t1
INNER JOIN [MyTable] t2 ON t2.Q_ID=t1.Q_ID AND t2.DeptID>t1.DeptID
0 голосов
/ 31 октября 2009

Вы также можете сделать это с аналитическими функциями и, таким образом, избежать объединения. В большинстве случаев это будет более эффективным, но это зависит от фактических данных и индексации.

with TRanked as (
  select
    QID,
    DeptID,
    EmployeeName,
    City,
    dense_rank() over (
      partition by CustomerID
      order by EmployeeID
    ) as ct
  from T
), TMaxRk as (
  select
    QID,
    DeptID,
    EmployeeName,
    City,
    max(ct) over (partition by CustomerID) as maxRk
  from TRanked
)
  select
    QID,
    DeptID,
    EmployeeName,
    City
  from TMaxRk
  where maxRk > 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...