我正在使用下面的代码,但它返回错误 -
关键字“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
)
答案 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;