如何在SQL中将临时生成的输出存储到表中

时间:2019-07-05 10:19:05

标签: sql mariadb

我有一条sql语句,我想将其计算结果写入表中。

我得到了一个临时的结果。但是很不幸,我无法将这些结果转移到新表中,因为它说的温度是没有定义的。

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)
;

actual SQL结果=“ 1054:字段列表中的列温度未知”;

预期结果是,表..._ import.factor中填充了来自临时值。

3 个答案:

答案 0 :(得分:0)

您要寻找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; 吗?

:active

答案 1 :(得分:0)

您可能想要SELECT...INTO

在您的第一个查询中,“ AS temp”将为您的结果集创建别名,而不是“ VALUES(...)”所要求的列列表,但在这里仍然无法使用。

答案 2 :(得分:0)

考虑语法

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

甚至

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

尝试返回DatumBeginn并将其存储为yyyy-mm-dd的DATE,而不是其他形式。

如果失败,请使用STR_TO_DATE()作为解析格式错误的日期字符串的更为简洁的方法。

格式正确的字符串不需要CAST( ... AS DATE)