Во-первых, я не буду требовать особых знаний в SQL.TSQL 2 Запросы в 1
То, что я пытаюсь сделать, это сбить некоторые инциденты из базы данных SQL Server на основе нескольких различных критериев и поместить их в SSRS в линейной диаграмме, которая показывает ежемесячные подсчеты друг над другом. Оба запроса, которые я изначально создал, вытащили нужные данные, но SSRS не позволит использовать несколько наборов данных на одной диаграмме. Здесь я повесил трубку. Я уверен, что могу сделать какой-то подзапрос, чтобы получить оба набора данных в одном, просто отделяя подсчеты от столбцов, но то, что я пробовал до сих пор, суммирует все счета.
Данные, которые мне нужны, - это дата, которая является значением даты/времени и количеством инцидентов, которые произошли (нет необходимости собирать подсчеты или не должно быть, поскольку SSRS позволит мне группировать их по месяцам, на что должен выглядеть отчет), соответствующий каждому из двух критериев.
Ниже приведены два запроса, которые я использую:
SELECT DISTINCT v_Incident.ReportedDate, COUNT(*) AS Count
FROM v_Incident INNER JOIN
v_IncidentMaxWorkLog_Category ON v_Incident.IncidentID = v_IncidentMaxWorkLog_Category.Incident_Number
WHERE (v_Incident.Summary LIKE N'Intelligent Incident for Impacted CI%') AND (v_Incident.CustomerFirstName = N'BMC') AND
(v_Incident.CustomerLastName = N'Impact Manager') AND (v_IncidentMaxWorkLog_Category.WORK_LOG_TYPE IN ('General Information', 'Incident Task/Action',
'Working Log')) AND (v_Incident.ReportedDate >= '7/1/2014') AND (v_Incident.ReportedDate >= DATEADD(year, - 1, GETDATE()))
GROUP BY v_Incident.ReportedDate
FROM v_Incident
Второй запрос
SELECT DISTINCT v_Incident.ReportedDate, COUNT(*) AS Count
FROM v_Incident INNER JOIN
v_IncidentMaxWorkLog_Category ON v_Incident.IncidentID = v_IncidentMaxWorkLog_Category.Incident_Number
WHERE (v_Incident.Summary LIKE N'Intelligent Incident for Impacted CI%') AND (v_Incident.CustomerFirstName = N'BMC') AND
(v_Incident.CustomerLastName = N'Impact Manager') AND (v_Incident.ReportedDate >= '7/1/2014') AND (v_Incident.ReportedDate >= DATEADD(year, - 1, GETDATE()))
GROUP BY v_Incident.ReportedDate
FROM v_Incident
Как вы можете видеть, я потянув вниз reporteddate и подсчет. Если я просто объединяю эти два оператора в одном выражении [select (query1) как отфильтрованный, (query2) в качестве базы] и перемещаю группу за пределы, я получаю результаты, но это общая сумма для каждого значения на каждом одна строка, и около 10 тыс. строк слишком много.
Есть ли простое решение, которое даст мне каждую дату и один счетчик для базы и отфильтруется с использованием этих двух или подобных запросов? Заранее большое спасибо!
Вы хотите, чтобы результаты были разбиты на результаты запроса или объединены?Как и в случае, если запрос 1 возвращает '1/1/2014, 10' и запрос 2 возвращает' 1/1/2014, 20' вы хотите '1/1/2014, 30' или вы хотите, чтобы он отображал дубликаты ? – Elias
Он должен быть отделен, поэтому, если запрос 1 возвращает 1/1/2014, 10 и запрос 2 возвращает 1/1/2014, 20 он должен выводить 1/1/2014. BASE: 10 FILTERED: 20 – billhubb84