#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. Этот ответ следовало оставить в качестве комментария человеку, которому вы хотели ответить.