вывод MySQL-запроса в сценарий оболочки

0

Привет, ребята, у меня есть следующий запрос mysql, который мне нужно вывести в таблицу для отправки по электронной почте клиентам. Мне нужно только отформатировать результаты в таблице.

 select division_name,
     count(*) "Total Cases on CTS",
     sum(if(Date(Filing_Date) = DATE_SUB(curdate(), INTERVAL 1 DAY), 1,0)) "entered yesterday",
     sum(if(DATE(Filing_date) = curdate(), 1, 0)) 'entered today',
     sum(if(YEAR(filing_date) = YEAR(curdate()) AND Month(filing_date) = Month(curdate()), 1,0)) "entered this month",
     sum(if(YEAR(filing_date) = YEAR(DATE_SUB(curdate(), INTERVAL 1 MONTH)) AND Month(filing_date) = Month(DATE_SUB(curdate(), INTERVAL 1 MONTH)), 1,0)) as entered_last_month
     from cases2v
     where court_rank_name like 'High Court'
          OR court_rank_name like 'Magistrate Court'
     group by division_name";

Я попытался вывести запрос в файл csv, а затем использовать ssconvert в linux (Centos 7) для преобразования в excel и отправки по электронной почте с помощью postfix, выходной файл выглядит не очень хорошо.. ему не хватает заголовков таблиц.

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

dbquery=$(mysql -u user -ppass -e "use db_name; select division_name, count(*) "Total Cases on CTS", sum(if(Date(Filing_Date) = DATE_SUB(curdate(), INTERVAL 1 DAY), 1,0)) "entered yesterday", sum(if(DATE(Filing_date) = curdate(), 1, 0)) 'entered today', sum(if(YEAR(filing_date) = YEAR(curdate()) AND Month(filing_date) = Month(curdate()), 1,0))  "entered this month", sum(if(YEAR(filing_date) = YEAR(DATE_SUB(curdate(), INTERVAL 1 MONTH)) AND Month(filing_date) = Month(DATE_SUB(curdate(), INTERVAL 1 MONTH)), 1,0)) as entered_last_month from cases2v  where court_rank_name like 'High Court' OR court_rank_name like 'Magistrate Court' group by division_name;")

array=($(for i in $dbquery; do echo $i; done )) 
Теги:

1 ответ

0
Лучший ответ

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

SELECT 
    'division_name' AS 'division_name',
    'Total Cases on CTS' AS 'Total Cases on CTS',
    'entered yesterday' as 'entered yesterday',
    'entered today' AS 'entered today',
    'entered this month' AS 'entered this month',
    'entered_last_month' AS 'entered_last_month'
UNION
SELECT 
    'division_name',
    count(*) AS 'Total Cases on CTS',
    sum(if(Date(Filing_Date) = DATE_SUB(CURDATE(), INTERVAL 1 DAY), 1,0))  AS 'entered yesterday',
    sum(if(DATE(Filing_date) = CURDATE(), 1, 0)) AS 'entered today',
    sum(if(YEAR(filing_date) = YEAR(CURDATE()) AND Month(filing_date) = Month(CURDATE()), 1,0)) AS 'entered this month',
    sum(if(YEAR(filing_date) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND Month(filing_date) = Month(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)), 1,0)) as 'entered_last_month'
FROM cases2v
WHERE court_rank_name LIKE 'High Court'
    OR court_rank_name LIKE 'Magistrate Court'
GROUP BY division_name";
  • 0
    спасибо Слоан за ответ, но в первом операторе выбора реальный столбец состоит только из трех .. 'имя_раздела', 'разделение_ид (для общего числа случаев на CTS) и' дата_доставки '(для введенного сегодня, введенного в этом месяце, введенного_месяца и введенного вчера ). Это означает, что у меня будет ошибка для операторов выбора, не имеющих одинаковое количество столбцов !? , на самом деле это ошибка, которую я получаю после запуска предоставленного решения. «Используемые операторы SELECT имеют разное количество столбцов»
  • 0
    Я решил столбцы из обоих утверждений выбора. Просто следил за тем, чтобы количество столбцов было одинаковым и Союз работал нормально .. спасибо
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню