Я пытаюсь создать таблицу на MariaDB 10.3 из инструкции SELECT. Таблица содержит информацию о клиенте и столбец с отсутствующими элементами для этой строки клиента. Вот пример настройки:
CREATE TABLE `customerTest` (
`custid` int(10) NOT NULL PRIMARY KEY,
`firstname` char(16) DEFAULT NULL,
`lastname` char(21) DEFAULT NULL,
`birthdate` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `customerTest` VALUES (1,'Fred',NULL,'1950-01-01'),(2,'Barney',NULL,NULL),(3,'Wilma','Flintstone',NULL);
Запрос работает, когда он не используется в операторе CREATE TABLE.
SELECT custid, customerMissingDemographics FROM (
SELECT custid, GROUP_CONCAT(CONCAT_WS(',',FName,LName,Birthdate)) AS customerMissingDemographics FROM (
SELECT c.custid,
CASE WHEN firstname = '' OR firstname IS NULL THEN 'First Name' ELSE NULL END AS FName,
CASE WHEN lastname = '' OR lastname IS NULL THEN 'Last Name' ELSE NULL END LName,
CASE WHEN birthdate = '' OR birthdate IS NULL THEN 'Birthdate' ELSE NULL END Birthdate
FROM `customerTest` c
GROUP BY custid
) computeMissingDemographics
GROUP BY computeMissingDemographics.custid
) aggregateMissingDemographics
WHERE customerMissingDemographics <> ''
Запрос возвращает:
custid|customerMissingDemographics
------|---------------------------
1|Last Name
2|Last Name,Birthdate
3|Birthdate
Однако, если я попытаюсь использовать CREATE TABLE test
для создания таблицы с результатами этого запроса, произойдет сбой с SQL Error [1292] [22001]: Data truncation: Incorrect datetime value: ''
Я попытался CAST поля в таблице computeMissingDemographics безрезультатно. Почему он это делает?