我正在尝试编写一个查询,从表中提取和转换数据,然后将这些数据插入另一个表。 是的,这是一个数据仓库查询,我在MS Access中这样做。 所以基本上我想要一些像这样的查询:

INSERT INTO Table2(LongIntColumn2, CurrencyColumn2) VALUES
  (SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1);

我试过但得到语法错误消息。

如果你想这样做,你会怎么做?

===============>>#1 票数:274 已采纳

没有“价值”,没有括号:

INSERT INTO Table2(LongIntColumn2, CurrencyColumn2)
SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1;

===============>>#2 票数:27

您有两种语法选项:

选项1

CREATE TABLE Table1 (
    id int identity(1, 1) not null,
    LongIntColumn1 int,
    CurrencyColumn money
)

CREATE TABLE Table2 (
    id int identity(1, 1) not null,
    LongIntColumn2 int,
    CurrencyColumn2 money
)

INSERT INTO Table1 VALUES(12, 12.00)
INSERT INTO Table1 VALUES(11, 13.00)

INSERT INTO Table2
SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM Table1 GROUP BY LongIntColumn1

选项2

CREATE TABLE Table1 (
    id int identity(1, 1) not null,
    LongIntColumn1 int,
    CurrencyColumn money
)

INSERT INTO Table1 VALUES(12, 12.00)
INSERT INTO Table1 VALUES(11, 13.00)


SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1
INTO Table2
FROM Table1
GROUP BY LongIntColumn1

请记住,选项2将创建一个只包含投影列(SELECT上的列)的表。

===============>>#3 票数:24

删除VALUES和括号。

INSERT INTO Table2 (LongIntColumn2, CurrencyColumn2)
SELECT LongIntColumn1, Avg(CurrencyColumn) FROM Table1 GROUP BY LongIntColumn1

===============>>#4 票数:10

从SQL中删除VALUES

===============>>#5 票数:10

我相信你在这个例子中的问题是“值”关键字。 只插入一行数据时使用“values”关键字。 要插入选择的结果,您不需要它。

另外,你真的不需要围绕select语句的括号。

来自msdn

多记录追加查询:

INSERT INTO target [(field1[, field2[, …]])] [IN externaldatabase]
SELECT [source.]field1[, field2[, …]
FROM tableexpression

单记录追加查询:

INSERT INTO target [(field1[, field2[, …]])]     
VALUES (value1[, value2[, …])

===============>>#6 票数:4

在追加一组行时删除“值”,并删除多余的括号。 您可以通过使用avg(CurrencyColumn)的别名(就像您在示例中所做的那样)或完全不使用别名来避免循环引用。

如果两个表中的列名相同,则查询将如下所示:

INSERT INTO Table2 (LongIntColumn, Junk)
SELECT LongIntColumn, avg(CurrencyColumn) as CurrencyColumn1
FROM Table1
GROUP BY LongIntColumn;

没有别名它会工作:

INSERT INTO Table2 (LongIntColumn, Junk)
SELECT LongIntColumn, avg(CurrencyColumn)
FROM Table1
GROUP BY LongIntColumn;

===============>>#7 票数:2

将数据从一个表插入到不同DATABASE中的另一个表中

insert into DocTypeGroup 
    Select DocGrp_Id,DocGrp_SubId,DocGrp_GroupName,DocGrp_PM,DocGrp_DocType 
    from Opendatasource( 'SQLOLEDB','Data Source=10.132.20.19;UserID=sa;Password=gchaturthi').dbIPFMCI.dbo.DocTypeGroup

===============>>#8 票数:2

那么我认为最好的方法是(将会?)定义2个记录集并将它们用作2个表之间的中间值。

  1. 打开两个记录集
  2. 从第一个表中提取数据(SELECT blablabla)
  3. 使用第一个记录集中可用的数据更新第二个记录集(通过添加新记录或更新现有记录)
  4. 关闭两个记录集

如果您计划更新来自不同数据库的表(即每个记录集可以拥有自己的连接......),此方法特别有用。

===============>>#9 票数:1

是否要在现有表中插入提取?

如果没关系,那么您可以尝试以下查询:

SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 INTO T1 FROM Table1 
GROUP BY LongIntColumn1);

它将创建一个新表 - > T1,其中包含提取的信息

  ask by Martin08 translate from so

未解决问题?本站智能推荐:

1回复

通过从另一个表中提取数据来插入表

我已经从其他人那里继承了这个项目,因此需要清理它以满足新的要求-他们是这样设计的。 我的Access数据库中有2个表(我在大括号中包括了字段的数据类型): 事件: EventID {自动编号} | EventTitle {短文本} | EventDescription {长
1回复

遍历表记录以基于键标识符更新另一个表记录

我对这个查询一直有疑问,说没有回音,但我知道有,因为我在看桌子。 我想遍历一个表,以通过单击按钮后的几个参数找到某些列信息。 因此,当我单击我的按钮时,它将遍历表一,根据ID查找所需的字段,并使用这些字段更新另一个表。 在我发疯之前先帮忙! 谢谢!
2回复

根据另一个表中的记录值将记录插入表中

我正在尝试使用Microsoft Access 2013创建报价系统。 当前,我的主要问题是尝试编写一个查询,该查询从一个表(itemquote)中选择具有特定quoteID匹配来自另一个表(currentquote)的quoteID的所有记录,然后将结果插入一个新表(quoteditem
2回复

访问查询以插入另一个表中的记录

我希望快速...我正在努力解决访问查询 我需要从表A的值复制到B表 , 只有当他们已经不表B使用存在MTR#字段,以确定是否存在。 插入时,查询还将需要将tB.ImgRefNum从上一个记录递增1。 我需要复制 有人帮我吗?
1回复

如何将新记录从一个表插入到另一个表

我想插入我的tbl_Cumulative出现任何新的记录tbl_Daily 。 我的tbl_Cumulative是所有tbl_Daily历史记录的综合记录。 tbl_Daily每天刷新。 我的INSERT INTO语句如下所示: 我首先根据ID加入表,并且这些表与tbl_Cum
2回复

将记录计数插入另一个表

我需要将一个表中所有记录的计数写到另一个表中。 我正在使用INSET INTO语句,这似乎很简单。 访问返回我犯了语法错误。 这是我的查询: 这里有什么问题? Access文档说您可以使用查询作为VALUES的参数。 是Access不喜欢的聚合吗?
1回复

使用SQL从另一个表中提取附件(Access 2010)?

好吧,基本上我有两个表,每个表的字段都相同(因为两个字段都设置为附件)。 现在,我想以某种方式将所有字段从一张表提取到另一张表。 当我尝试以下语法时,会出现以下错误消息。 错误消息: Insert INTO查询不能包含multi-valued字段。 从此错误消息中,我注意到这与
3回复

如果另一个表中不存在条目,则将记录插入表中 - 并进行额外的扭曲

嗨,你们所有强大的SQLsuperheros在那里..任何人都可以救我从迫在眉睫的灾难和毁灭? 我正在使用Microsoft Access SQL。 我想在一个表(table1)中选择不出现在另一个表(table2)中的记录,然后在table2中插入基于table1中记录的新记录,如下所
1回复

根据日期从Access表中提取记录

我目前正在尝试根据前一天提取特定记录。 我主要在设置查询时使用SQL。 我选择了需要的特定字段,但在末尾设置了where语句,如下所示: WHERE ((([CurrentData].[Closed Date])=Date()-1)); 我收到一个弹出框,以MM / DD / YYY
1回复

需要根据从表中提取的信息向表中插入行

我需要根据另一个表中的行填充一个表。 我们将必须填充的表称为表A,然后将用于填充的表称为表B。 表B的客户ID列以及他们完成的不同交易类型的数量(例如,已售出,已购买,已交换)。 表A包含用于客户ID的列,交易的名称(已售,已购买,已交换),以及是否他们曾经进行过该交易的列。 是