Как сохранить сгенерированный временный вывод в SQL в таблице - PullRequest
0 голосов
/ 05 июля 2019

У меня есть SQL-оператор, который является результатом вычислений, которые я хочу записать в таблицу.

Я получил результат для темп.Но, к сожалению, я не могу перенести эти результаты в новую таблицу, потому что там говорится, что temp не определен.

SELECT BUM.LMISTAT_import.UhrzeitBeginn, BUM.LMISTAT_import.UhrzeitEnde,BUM.LMISTAT_import.DatumEnde,BUM.LMISTAT_import.DatumBeginn,
TIMESTAMPDIFF(DAY, CAST(CONCAT(RIGHT(BUM.LMISTAT_import.DatumBeginn,2),'-',MID(BUM.LMISTAT_import.DatumBeginn,4,2),'-',LEFT(BUM.LMISTAT_import.DatumBeginn,2)) AS DATETIME),
CAST(CONCAT(RIGHT(BUM.LMISTAT_import.DatumEnde,2),'-',MID(BUM.LMISTAT_import.DatumEnde,4,2),'-',LEFT(BUM.LMISTAT_import.DatumEnde,2)) AS DATETIME)) AS temp 
FROM BUM.LMISTAT_import;
INSERT INTO BUM.LMISTAT_import(BUM.LMISTAT_import.factor)
VALUES (temp)
;

actural SQL Result = "1054: Неизвестная температура столбца в списке полей";

ожидаемый результат состоит в том, что таблица ..._ import.factor заполнена значениями из temp.

Ответы [ 3 ]

0 голосов
/ 05 июля 2019

Вы, вероятно, хотите SELECT ... INTO .

В вашем первом запросе "AS temp" создает псевдоним для вашего набора результатов, а не список столбцов, который требуется для "VALUES (...)", но который все равно не будет работать здесь.

0 голосов
/ 05 июля 2019

Рассмотрим синтаксис

INSERT INTO temp (a,b,c)
    SELECT x,y,z ...;

Или даже

CREATE TABLE temp (a,b,c)
    SELECT x,y,z ...;

Попытайтесь вернуться в DatumBeginn и сохранить его как DATE, то есть гггг-мм-дд, а не какую-то другую форму.

В противном случае используйте STR_TO_DATE () в качестве гораздо более краткого способа разбора искаженных строк даты.

И правильно сформированная строка не нуждается CAST( ... AS DATE)

0 голосов
/ 05 июля 2019

Вы ищете create table as?

CREATE TABLE temp AS
    SELECT i.UhrzeitBeginn, i.UhrzeitEnde,
           i.DatumEnde, i.DatumBeginn,
           TIMESTAMPDIFF(DAY, 
                         CAST(CONCAT(RIGHT(i.DatumBeginn, 2), '-', MID(i.DatumBeginn,4,2), '-', LEFT(i.DatumBeginn,2)) AS DATETIME),
                         CAST(CONCAT(RIGHT(i.DatumEnde, 2), k'-', MID(i.DatumEnde, 4, 2), '-', LEFT(i.DatumEnde,2)) AS DATETIME)
                        ) AS temp 
    FROM BUM.LMISTAT_import i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...