Как получить данные из другой таблицы в группе по запросу? - PullRequest
0 голосов
/ 23 мая 2019

Я попытался сгруппировать записи из одной таблицы, которые имеют аналогичные SerialNo. И я также хочу показать записи столбцов из другой таблицы, которая имеет связь с таблицей один с использованием SerialNo.

У меня есть таблица 1:

enter image description here

И таблица 2:

enter image description here

Мой запрос:

select CIT_SERIALNUMBER, COUNT(CIT_ID)
 as Cases from Table_2 where CIT_SOURCEID like '%E_One%'
 and (CIT_CREATED BETWEEN '2018-01-15'AND '2019-06-15') and CIT_SERIALNUMBER is not null
   group by CIT_SERIALNUMBER
  having COUNT(CIT_ID)>1 order by  min(CIT_CREATED) desc

Вот таблица результатов:

enter image description here

В приведенном выше запросе я получил только CIT_SERIALNUMBER записей из Table_2 . Но я также хочу получить данные из Table_1 столбец ComputerName . Итак, ожидаемый результат:

enter image description here

Примечание. Две таблицы 1 и 2 могут быть объединены столбцами T1_Serial и CIT_SERIALNUMBER.

Пожалуйста, помогите мне переписать SQL-запрос для достижения ожидаемого результата выше.

Ответы [ 3 ]

0 голосов
/ 23 мая 2019

Попробуйте это-

SELECT A.ComputerName,
CIT_SERIALNUMBER, 
COUNT(CIT_ID) AS Cases
FROM table_1 A
INNER JOIN Table_2 B ON A.Column T1_Serial = CIT_SERIALNUMBER.
WHERE B.CIT_SOURCEID LIKE '%E_One%'
      AND (B.CIT_CREATED BETWEEN '2018-01-15' AND '2019-06-15')
      AND B.CIT_SERIALNUMBER IS NOT NULL
GROUP BY A.ComputerName,B.CIT_SERIALNUMBER
HAVING COUNT(B.CIT_ID) > 1
ORDER BY MIN(B.CIT_CREATED) DESC;
0 голосов
/ 24 мая 2019

Это выглядит странно, но у меня есть решение для этого:

  • Сначала я выбираю все дублированные записи из таблицы_2
  • Затем я присоединяюсь к Table_1 с набором результатов Table_2, чтобы просмотреть столбец из обеих таблиц
  • Затем я использую другой выбор, чтобы выбрать данные из набора результатов выше и сгруппировать по всем записям.

Вот запрос:

select z.CIT_SERIALNUMBER, z.ComputerName, z.Cases from (
SELECT y.CIT_SERIALNUMBER, x.ComputerName, y.Cases
    FROM Table_1 x
    right JOIN (
      select CIT_SERIALNUMBER, COUNT(CIT_ID)
 as Cases from Table_2 where CIT_SOURCEID like '%E_One%'
 and (CIT_CREATED BETWEEN '2018-01-15'AND '2019-06-15') and CIT_SERIALNUMBER is not null
   group by CIT_SERIALNUMBER
  having COUNT(CIT_ID)>1 
  ) y ON y.CIT_SERIALNUMBER = x.SerialNo) z  group by CIT_SERIALNUMBER, z.ComputerName, z.Cases

Набор результатов:

enter image description here

0 голосов
/ 23 мая 2019

Если я правильно понял названия ваших столбцов, попробуйте следующее:

select CIT_SERIALNUMBER, ComputerName, COUNT(CIT_ID)
 as Cases from Table_2 join Table_1 on Table_2.CIT_SERIALNUMBER=Table_1.Serial where CIT_SOURCEID like '%E_One%'
 and (CIT_CREATED BETWEEN '2018-01-15'AND '2019-06-15') and CIT_SERIALNUMBER is not null
   group by CIT_SERIALNUMBER
  having COUNT(CIT_ID)>1 order by  min(CIT_CREATED) desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...