我正在尝试编写一个查询,从表中提取和转换数据,然后将这些数据插入另一个表 . 是的,这是一个数据仓库查询,我在MS Access中这样做 . 所以基本上我想要一些像这样的查询:
INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) VALUES
(SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1);
我试过但得到语法错误消息 .
如果你想这样做,你会怎么做?
9 回答
没有“ Value ”,没有括号:
您有两种语法选项:
Option 1
Option 2
请记住,选项2将创建一个只包含投影列(SELECT上的列)的表 .
删除VALUES和括号 .
从SQL中删除
VALUES
.我相信你在这个例子中的问题是“值”关键字 . 只插入一行数据时使用“values”关键字 . 要插入选择的结果,您不需要它 .
另外,你真的不需要围绕select语句的括号 .
来自msdn:
多记录追加查询:
单记录追加查询:
在追加一组行时删除“值”,并删除多余的括号 . 您可以通过使用avg(CurrencyColumn)的别名(就像您在示例中所做的那样)或完全不使用别名来避免循环引用 .
如果两个表中的列名相同,则查询将如下所示:
没有别名它会工作:
那么我认为最好的方法是(将会?)定义2个记录集并将它们用作2个表之间的中间值 .
打开两个记录集
从第一个表中提取数据(SELECT blablabla)
使用第一个记录集中可用的数据更新第二个记录集(通过添加新记录或更新现有记录)
关闭两个记录集
如果您计划更新来自不同数据库的表(即每个记录集可以拥有自己的连接......),此方法特别有用 .
将数据从一个表插入到不同DATABASE中的另一个表中
是否要在现有表中插入提取?
如果没关系,那么您可以尝试以下查询:
它将创建一个新表 - > T1,其中包含提取的信息