关键字“SCHEMA”附近的语法不正确。错误创建它

时间:2016-07-06 07:33:16

标签: sql sql-server sql-server-2008 views database-schema

我正在尝试创建一个视图架构,但遇到了一些问题。

你能解释一下吗?我是模式新手。

CREATE VIEW schema.[TEMP1_V](
LOCATION,
OBJECTID,
CTID,
numb,
COUNTALL,
COUNTALL_DEBIT
)
AS SELECT 
LOCATION,
OBJECTID,
CTID,
numb,
COUNTALL,
COUNTALL_DEBIT
COUNT (location) OVER (PARTITION BY location) AS COUNTALL,
COUNT (location) OVER (PARTITION BY location, IS_DEBIT) AS COUNTALL_DEBIT
FROM ALLOCAMT_V

尝试创建时出错。 '关键字'SCHEMA'附近的语法不正确。'

3 个答案:

答案 0 :(得分:1)

我怀疑您的架构实际上是schema。默认值为dbo,因此我在下面的示例中使用的是COUNTALL。您也不需要像现在这样声明您的字段名称。您还复制了select语句中的COUNTALL_DEBITCREATE VIEW dbo.[TEMP1_V] AS SELECT LOCATION, OBJECTID, CTID, numb, COUNT (location) OVER (PARTITION BY location) AS COUNTALL, COUNT (location) OVER (PARTITION BY location, IS_DEBIT) AS COUNTALL_DEBIT FROM ALLOCAMT_V 列。

n

答案 1 :(得分:0)

尝试使用dbo

dbo是SQL Server中的Defult架构。如果您有自己的架构,则可以使用<schema_name>.[TEMP1_v]

创建此视图
    CREATE VIEW dbo.[TEMP1_V]
    AS SELECT 
    LOCATION,
    OBJECTID,
    CTID,
    numb,
    COUNT (location) OVER (PARTITION BY location) AS COUNTALL,
    COUNT (location) OVER (PARTITION BY location, IS_DEBIT) AS COUNTALL_DEBIT
FROM ALLOCAMT_V

答案 2 :(得分:0)

首先,你的例子从这开始:

CREATE VIEW

因此,我们不知道它是如何工作的,我们会从Microsoft的MSDN页面中查找CREATE VIEW - MSDN并看到以下内容:

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] 
[ WITH <view_attribute> [ ,...n ] ] 
AS select_statement 
[ WITH CHECK OPTION ] [ ; ]

<view_attribute> ::= 
{
    [ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     }

我们注意到VIEW的示例不包含开头部分中的列,因此我们回到MSDN上的定义并查看以下内容:

  

<强>模式名

     

视图所属的schema的名称是

     

专栏

     

是否用于视图中列的名称。列名是   仅当从算术表达式派生列时才需要   函数或常数;当两列或更多列可能有其他情况时   同名,通常是因为加入;或者当视图中的列时   指定的名称与其所在列的名称不同   的。 列名也可以在SELECT语句中分配

     

如果未指定列,则视图列的名称与相同    SELECT语句中的列。

更新:因为您的查询已经完成,所以没有理由在此处定义列。

这给我们带来了这些结论:

  • 使用MSDN解决语法问题。
  • 如果您绝对必须,请仅指定视图中的列。
  • 只能在当前 database
  • 中创建视图