【问题标题】:Create table sql in access在access中创建表sql
【发布时间】:2016-05-14 04:59:02
【问题描述】:

这是我在 sql 中的查询。似乎说我有语法错误。我习惯于在 SQL Server 中编码而不是 Access,因为我期望这个结果。如果有人可以帮助我更正我的代码,我将不胜感激!

 create table  M (
 NMR_METER_PT_REF Varchar (50) ,
 NMR_ST_METER_READ_DATE Datetime,
 NMR_END_METER_READ_DATE datetime,
 NMR_ST_METER_READING Int,
 NMR_END_METER_READING int,
 RCH_RECONCILIATION_QTY int,
 METERS_THROUGH_ZEROS_COUNT int);

INSERT M (

SELECT 
NMR_METER_PT_REF
, NMR_ST_METER_READ_DATE
, NMR_END_METER_READ_DATE
, NMR_ST_METER_READING
, NMR_END_METER_READING
, RCH_RECONCILIATION_QTY
, METERS_THROUGH_ZEROS_COUNT
 FROM G
 WHERE  (((NMR.ST.METER_READING) <= NMR.ST.METER_READING)))


select * from M
drop table M
;

【问题讨论】:

  • 您能解释一下在删除 M 后您希望如何从 M 中进行选择吗?
  • 我很抱歉我把它改成了错别字
  • 我在 INSERT 访问中遇到错误正在突出显示插入
  • 使用INSERT INTO [tablename] SELECT * FROM [table2] 语法
  • 另外,TSQL 允许您声明临时表。这比专门为此查询创建一个表,然后将其删除要好。

标签: sql ms-access


【解决方案1】:

首先插入后删除表是疯狂的:)

使用INSERT时第二次指定列列表:

create table  M (
 NMR_METER_PT_REF Varchar (50) ,
 NMR_ST_METER_READ_DATE Datetime,
 NMR_END_METER_READ_DATE datetime,
 NMR_ST_METER_READING Int,
 NMR_END_METER_READING int,
 RCH_RECONCILIATION_QTY int,
 METERS_THROUGH_ZEROS_COUNT int);

INSERT M (  NMR_METER_PT_REF
  , NMR_ST_METER_READ_DATE
  , NMR_END_METER_READ_DATE
  , NMR_ST_METER_READING
  , NMR_END_METER_READING
  , RCH_RECONCILIATION_QTY
  , METERS_THROUGH_ZEROS_COUNT)
SELECT 
   NMR_METER_PT_REF
  , NMR_ST_METER_READ_DATE
  , NMR_END_METER_READ_DATE
  , NMR_ST_METER_READING
  , NMR_END_METER_READING
  , RCH_RECONCILIATION_QTY
  , METERS_THROUGH_ZEROS_COUNT
 FROM G
 WHERE NMR.ST.METER_READING <= NMR.ST.METER_READING;  -- always true

 -- drop table M
 select * from M;
 drop table M;  

最后,您的WHERE 条件引用了FROM 子句中未指定的对象。

编辑:

如果你想在 SQL Server 中使用临时表,你可以使用temporary table:

SELECT 
   NMR_METER_PT_REF
  , NMR_ST_METER_READ_DATE
  , NMR_END_METER_READ_DATE
  , NMR_ST_METER_READING
  , NMR_END_METER_READING
  , RCH_RECONCILIATION_QTY
  , METERS_THROUGH_ZEROS_COUNT
INTO #M
FROM G
-- WHERE  NMR.ST.METER_READING <= NMR.ST.METER_READING --??

SELECT * FROM #M; 

【讨论】:

  • 那毫无意义,我在access中创建了一个临时表,当你取出M的创建时,我如何将数据插入M
  • 如您所见,我将选择插入到插入中
【解决方案2】:

总结一下:

  • 您不能将所有这些语句放在一个查询中。每个部分(CREATE / INSERT / SELECT / DROP)都必须在单独查询中执行。
  • INSERT 必须是 INSERT INTO
  • WHERE 子句WHERE (((NMR.ST.METER_READING) &lt;= NMR.ST.METER_READING)) 将字段与其自身进行比较。

【讨论】:

  • 我知道,这是本意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2013-05-26
  • 1970-01-01
  • 2021-10-17
相关资源
最近更新 更多