在访问中创建表sql

时间:2016-02-04 14:19:31

标签: sql ms-access

这是我在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
;

2 个答案:

答案 0 :(得分:0)

首先插入后的丢弃表是疯了:)

使用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; 

答案 1 :(得分:0)

总结如下:

  • 您无法将所有这些语句放入一个查询中。必须在单独的查询中执行每个部分(CREATE / INSERT / SELECT / DROP)。
  • INSERT必须为INSERT INTO
  • WHERE子句WHERE (((NMR.ST.METER_READING) <= NMR.ST.METER_READING))将字段与自身进行比较。