Добрый день. Помогите, пожалуйста, разобраться, что не так делаю. Создаю временную таблицу с названиями месяцев, соединяю с основной таблицей по названию месяца, и пустой результат запроса получается. В документации читал, функция to_char(timestamp, text) возвращает результат с типом текст, во временной таблице так же тип текст присваиваю.
CREATE TEMPORARY TABLE templTableMonths(
id SERIAL PRIMARY KEY,
name text NOT NULL
);
INS ERT INTO templTableMonths(name)
VALUES ('Январь'),
('February');
--sele ct * from templTableMonths;
sel ect
Date(myTable.date) "Дата"
fr om my_table myTable
inner join templTableMonthstemplTableMonths
on
to_char(myTable.date, 'Month') = templTableMonths.name
group by
Date(myTable.date)
-- create
CRE ATE TABLE EMPLOYEE (
empId INTEGER PRIMARY KEY,
name TEXT NOT NULL,
dept TEXT NOT NULL,
mydate date
);
-- insert
INS ERT IN TO EMPLOYEE VALUES (0001, 'Clark', 'Sales','2022-08-25');
INS ERT IN TO EMPLOYEE VALUES (0002, 'Dave', 'Accounting','2022-09-11');
INS ERT IN TO EMPLOYEE VALUES (0003, 'Ava', 'Sales', '2022-10-21');
INS ERT IN TO EMPLOYEE VALUES (0004, 'Clark', 'Sales','2022-02-25');
INS ERT IN TO EMPLOYEE VALUES (0005, 'Dave', 'Accounting','2022-05-11');
INS ERT IN TO EMPLOYEE VALUES (0006, 'Ava', 'Sales', '2022-12-21');
-- fetch
CREATE TEMPORARY TABLE months (
id SERIAL PRIMARY KEY,
month_name TEXT
);
INS ERT IN TO months (month_name)
VALUES
('январь'),
('февраль'),
('Март'),
('Апрель'),
('Май'),
('Июнь'),
('Июль'),
('Август'),
('Сентябрь'),
('Октябрь'),
('Ноябрь'),
('декабрь');
SEL ECT name,dept,date_part('month', mydate) as month ,t2.month_name
FR OM EMPLOYEE t1 left join months t2 ON t2.id = date_part('month', mydate) ;
Показать
name | dept | month | month_name
-------+------------+-------+------------
Clark | Sales | 2 | февраль
Dave | Accounting | 5 | Май
Clark | Sales | 8 | Август
Dave | Accounting | 9 | Сентябрь
Ava | Sales | 10 | Октябрь
Ava | Sales | 12 | декабрь
, на скрине значения, которые у меня выводятся по этому запросу. Январь, ок, но по полю February должно было соединиться, так как во временной таблице у меня это значение так же присутствует. Или я ошибаюсь? А сарказма я совсем не понял.
-- create
CRE ATE TABLE EMPLOYEE (
empId INTEGER PRIMARY KEY,
name TEXT NOT NULL,
dept TEXT NOT NULL,
mydate date
);
-- insert
INS ERT IN TO EMPLOYEE VALUES (0001, 'Clark', 'Sales','2022-08-25');
INS ERT IN TO EMPLOYEE VALUES (0002, 'Dave', 'Accounting','2022-09-11');
INS ERT IN TO EMPLOYEE VALUES (0003, 'Ava', 'Sales', '2022-10-21');
INS ERT IN TO EMPLOYEE VALUES (0004, 'Clark', 'Sales','2022-02-25');
INS ERT IN TO EMPLOYEE VALUES (0005, 'Dave', 'Accounting','2022-05-11');
INS ERT IN TO EMPLOYEE VALUES (0006, 'Ava', 'Sales', '2022-12-21');
-- fetch
CREATE TEMPORARY TABLE months (
id SERIAL PRIMARY KEY,
month_name TEXT
);
INS ERT IN TO months (month_name)
VALUES
('январь'),
('февраль'),
('Март'),
('Апрель'),
('Май'),
('Июнь'),
('Июль'),
('Август'),
('Сентябрь'),
('Октябрь'),
('Ноябрь'),
('декабрь');
SEL ECT name,dept,date_part('month', mydate) as month ,t2.month_name
FR OM EMPLOYEE t1 left join months t2 ON t2.id = date_part('month', mydate) ;
Показать
name | dept | month | month_name
-------+------------+-------+------------
Clark | Sales | 2 | февраль
Dave | Accounting | 5 | Май
Clark | Sales | 8 | Август
Dave | Accounting | 9 | Сентябрь
Ava | Sales | 10 | Октябрь
Ava | Sales | 12 | декабрь