我的连接查询出错

时间:2013-08-12 14:31:10

标签: sql sql-server tsql

我正在使用下面的代码,但它返回错误 -

  

关键字“AS”附近的语法不正确

我希望查询使用现有表中的数据创建表。

create table Allactivity as
(
    select dbo.dim_client.*,dbo.dim_transaction.* 
    from dbo.dim_client,dbo.dim_transaction,dbo.fact_capital   
    where dbo.dim_client.dim_client_key=dbo.fact_capital.dim_client_key
        and dbo.dim_transaction.dim_transaction_key=dbo.fact_capital.dim_transaction_key
)

2 个答案:

答案 0 :(得分:2)

看起来您正在使用Microsoft SQL Server。 T-SQL具有不同的语法:SELECT INTO:

http://msdn.microsoft.com/en-us/library/ms190750.aspx

select dbo.dim_client.*,dbo.dim_transaction.* 
into Allactivity
from dbo.dim_client,dbo.dim_transaction,dbo.fact_capital   
where dbo.dim_client.dim_client_key=dbo.fact_capital.dim_client_key
    and dbo.dim_transaction.dim_transaction_key=dbo.fact_capital.dim_transaction_key

答案 1 :(得分:0)

如果使用select into语法,则需要拥有动态创建表的权限

另一种解决方案是使用DBA提前创建登台表。然后每次清除并加载登台表。让DBA为您提供表格的应用程序权限。这可以是db_datareader& db_datawriter,它比db_owner少得多!

我确实注意到您使用较旧的语法进行连接,您应该使用较新的语法来实现前向兼容性
http://www.straightpathsql.com/archives/2012/11/sql-server-join-syntax-its/

-
- DBA - 创建空的新表(假设存在阶段模式)
-

选择
DC。*,
DT *
进入 stage.all_activity
来自 dbo.fact_capital为fc
左连接
dbo.dim_client为dc
在fc.dim_client_key = dc.dim_client_key
左连接
dbo.dim_transaction as dt
在fc.dim_transaction_key = dt.dim_transaction_key
其中(1 = 0);

- 用户/应用程序 - 清除表格 从stage.all_activity中删除;

- 用户/应用程序 - 添加一些数据(范围的+ where子句)
插入
stage.all_activity
选择
dc。*,
dt。*
来自 dbo.fact_capital为fc
左连接
dbo.dim_client为dc
在fc.dim_client_key = dc.dim_client_key
左连接
dbo.dim_transaction as dt
在fc.dim_transaction_key = dt.dim_transaction_key;