2 SQL — запроса, чередующиеся по идентификационному номеру

#python #sql #excel #report

Вопрос:

У меня есть 2 запроса, которые будут выполняться повторно для подачи отчета и некоторых диаграмм, поэтому нужно убедиться, что они плотные. Первый запрос содержит 25 столбцов и выдаст 25-50 строк из массивной таблицы. Мой второй запрос приведет к появлению еще 25 столбцов (пары совпадающих столбцов) от 25 до 50 строк из другой массивной таблицы.

Желаемый конечный результат-это один документ, в котором Запрос 1 (Проблема) и запрос 2 (Проблемные задачи) могут совпадать в общем столбце (Идентификатор проблемы), так что строка 1 является проблемой, строка 2-4-задачами, строка 5-следующей проблемой и 6-9-задачами….и т. Д. Теперь я понимаю, что мог бы сделать это вручную, выполнив 2 запроса и просто объединив их в Excel вручную, но ища красноречивый процесс, который можно было бы повторно использовать в мое отсутствие без особых накладных расходов.

Я изучал вставки, объединение всех и перекрестное соединение, но у 2 запросов есть разные столбцы, которые содержат разные важные элементы данных, которые должны быть возвращены. Кроме того, я изучаю возможность создания задания на Python для этого, импортируя CSV-файлы и результаты чередования, но я начинаю изучать науку о данных и еще не закончил создавать диаграммы из импортированных CSV-файлов.

Есть какие-нибудь предложения о том, как я мог бы решить эту проблему? Спасибо за помощь. Изображение желаемого конечного результата. введите описание изображения здесь

Комментарии:

1. SQL возвращает результирующие наборы, в которых столбцы одинаковы для всех строк. Хотя вы можете искажать данные в SQL, этот тип операций лучше выполнять на прикладном уровне.

Ответ №1:

Вы можете сделать это с помощью чего-то вроде

 INSERT INTO target_table (<columns...>)
  SELECT <your first query> 
  UNION
  SELECT <your second query>
 

А затем для извлечения данных

 SELECT * from target_table 
  WHERE <...>
  ORDER BY problem_id, task_id
 

Просто убедитесь, что оба запроса возвращают одни и те же столбцы , т. Е. столбцы, которые вы хотите заполнить target_table , возможно, с использованием фиксированных значений по умолчанию (например, первый запрос может вернуть значение по умолчанию task_id , включив NULL as task_id его в список столбцов).

Ответ №2:

Спасибо за отзыв @gimix, я закончил тем, что сгладил столбцы, которые мне удалось собрать из 2 таблиц (open_time против date_opened и т. Д.), поэтому все они совпали и выбрали «для нулевых значений, которые мне были нужны». Я объединил 2 выбранных оператора, как было предложено, а затем, наконец, понял, что могу просто вставлять свои запросы фильтрации в два раза больше подзапросов. Теперь это будет приятно и быстро повторяться для извлечения и ввода в Excel 2 раза в неделю. Спасибо!

Комментарии:

1. Этот ответ следовало оставить в качестве комментария человеку, которому вы хотели ответить.