我正在尝试创建一个视图架构,但遇到了一些问题。
你能解释一下吗?我是模式新手。
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'附近的语法不正确。'
答案 0 :(得分:1)
我怀疑您的架构实际上是schema
。默认值为dbo
,因此我在下面的示例中使用的是COUNTALL
。您也不需要像现在这样声明您的字段名称。您还复制了select语句中的COUNTALL_DEBIT
和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
列。
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