【问题标题】:Sql server error Incorrect syntax near '('Sql server 错误 '(' 附近的语法不正确
【发布时间】:2015-03-13 13:40:39
【问题描述】:
create table new_temp AS
(SELECT * 
  FROM [Sales].[dbo].[SecondarySales]
  left JOIN [Sales].[dbo].[PrimarySales]
  On [Sales].[dbo].[SecondarySales].[SalesFromID]=[Sales].[dbo].[PrimarySales].[SalesToID]);

当我尝试在 sql server 管理控制台中创建表时,我在此查询中遇到错误“靠近 AS 关键字的 '('." 附近的语法不正确。

【问题讨论】:

  • 除了使用SELECT INTO 来代替它之外,您还需要为两者中出现的任何字段设置别名,因为一个表不能有多个同名字段。
  • 我添加了别名,但问题仍然存在

标签: sql sql-server sql-server-2008


【解决方案1】:

这不是从 sql server 中的select 语句到create 表的正确方法

使用INTO 子句

SELECT...INTO 在默认文件组中创建一个新表并插入 从查询到它的结果行

SELECT A.Col1,A.col2,B.Col1 as B_col1,B.col3...
INTO   new_temp
FROM   [Sales].[dbo].[SecondarySales] A
       LEFT JOIN [Sales].[dbo].[PrimarySales] B
              ON [Sales].[dbo].[SecondarySales].[SalesFromID] = [Sales].[dbo].[PrimarySales].[SalesToID]; 

正如HART CO 在注释中提到的,如果两个表中的任何列名相同,则表中的列名应该是唯一的,那么您必须提供别名。

更新:

SELECT a.PrimarySalesId,a.SalesFromID,a.SalesToID,a.InvoiceNumber,a.InvoiceDate,
       a.ReceiveDate,a.TotalQuantity,a.TotalAmount,a.IsAcknowledgementRequired,
       a.IsReceived,a.SalesType,a.AcknowlegeDate,a.Status,a.SalesMan,
       a.RecordCreationDate,a.ModifiedOn,a.CreatedBy,a.ModifiedBy,
       b.SecondarySalesID,b.AcknowlegeDate,
       b.CreatedBy,
       b.InvoiceDate as SecondarySales_InvoiceDate,
       b.InvoiceNumber as SecondarySales_InvoiceNumber,
       b.IsAcknowledgementRequired,
       b.IsReceived as SecondarySales_IsReceived,
       b.Modified,
       b.ModifiedOn as SecondarySales_ModifiedOn,
       b.ReceiveDate,
       b.RecordCreationDate,
       b.SalesFromID as SecondarySales_SalesFromID,
       b.SalesMan as SecondarySales_SalesMan,
       b.SalesManID,
       b.SalesToID as SecondarySales_SalesToID,
       b.SalesType,
       b.Status,
       b.TotalAmount,
       b.TotalQuantity
INTO   new_temp
FROM   [Sales].[dbo].[SecondarySales] b
       LEFT JOIN [Sales].[dbo].[PrimarySales] a
              ON b.SalesFromID = a.SalesToID 

【讨论】:

  • 如果我想要两个表中的所有列怎么办
  • @user1129400 - 如果您在两个表中都没有任何公共列,则保留 * 否则键入所有列
  • 现在 IAM 收到错误消息 4104,级别 16,状态 1,第 26 行无法绑定多部分标识符“Sales.dbo.SecondarySales.SalesFromID”。 Msg 4104, Level 16, State 1, Line 26 无法绑定多部分标识符“Sales.dbo.PrimarySales.SalesToID”。
  • @user1129400 - 现在检查
猜你喜欢
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 2017-07-15
  • 2019-02-04
相关资源
最近更新 更多