Как мне написать запрос для объединения трех таблиц? - PullRequest
0 голосов
/ 14 марта 2019

Мне нужно объединить три таблицы:

Таблица данных дела - содержит уникальную строку для каждой метрической таблицы номера дела - может иметь несколько строк для номера дела Задача SLA Table - может иметь несколько строк для делачисло

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

В итоговой таблице должны быть строки с уникальными номерами дел и все столбцы из таблицы данных дела, столбец «Создано» для каждого случая из таблицы метрик, а также столбцы «Истекшее время» и «Оставшееся время»Таблица SLA.

Но чтобы удалить дублирование, мы должны выбрать только одну запись из таблиц метрик и SLA.

Критерии выбора этой записи для каждого случая:

Метрическая таблица - выберите минимальную дату «Создано» для каждого дела.

Task SLA Table - выберите значения «Истекшее время» и «Оставшееся время», соответствующие максимальному значению «Дата начала» для каждогоcase.

Мне удалось выполнить первое соединение, используя следующий запрос (Соединение было создано между таблицами Case Data и Metric с использованием SUBSTRING, потому что перед таблицами Case в таблице Metric добавлен 'Case:').:

    SELECT cd.Number, cd.Channel, cd.[State], cd.[Priority], cd.[Affected User], cd.Organization, 
    cd.Contact, cd.Client, cd.Product, cd.Category, cd.Subcategory, cd.[Ticket Summary], cd.[Case Type], 
    cd.[Case Aging], cd.Resolved, cd.Closed, cd.[Follow up], cd.Opened, cd.[Made SLA], cd.[SLA due], cd.[Schedule Follow Up],
    cd.[Resolution code], cd.[L2/L3 User], cd.Updated,

    Min(Created) AS 'First Response' FROM [dbo].[Support Dashboard Case Data] cd 

JOIN [dbo].[Metric Data] md ON cd.Number = SUBSTRING(md.ID,7,LEN(md.ID)) 

group by   cd.Number, cd.Channel, cd.[State], cd.[Priority], cd.[Affected User], cd.Organization, 
    cd.Contact, cd.Client, cd.Product, cd.Category, cd.Subcategory, cd.[Ticket Summary], cd.[Case Type], 
    cd.[Case Aging], cd.Resolved, cd.Closed, cd.[Follow up], cd.Opened, cd.[Made SLA], cd.[SLA due], cd.[Schedule Follow Up],
    cd.[Resolution code], cd.[L2/L3 User], cd.Updated

Как включить здесь второе объединение?

1 Ответ

0 голосов
/ 14 марта 2019

использовать row_number ()

select * from
(
SELECT cd.Number, cd.Channel, cd.[State], cd.[Priority], cd.[Affected User], cd.Organization, 
    cd.Contact, cd.Client, cd.Product, cd.Category, cd.Subcategory, cd.[Ticket Summary], cd.[Case Type], 
    cd.[Case Aging], cd.Resolved, cd.Closed, cd.[Follow up], cd.Opened, cd.[Made SLA], cd.[SLA due], cd.[Schedule Follow Up],
    cd.[Resolution code], cd.[L2/L3 User], cd.Updated,Created 'First Response',row_number() over(partition by cd.number order by created desc) as rn
FROM [dbo].[Support Dashboard Case Data] cd 
JOIN [dbo].[Metric Data] md ON cd.Number = SUBSTRING(md.ID,7,LEN(md.ID)) 
)A where rn=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...