我正在尝试修改一个视图 - 我只是想提供一个完全新的 SELECT
语句的定义。
我的 SQL 语句看起来像这样(出于隐私原因,我更改了一些列):
ALTER VIEW dbo.vwViewNameHere
AS
SELECT
h.BATCH, h.batch_name COLLATE Latin1_General_CI_AS,
h.serial_from, h.serial_to, h.batch_description
FROM
(SELECT
BATCH, LTRIM(RTRIM(NAME)) COLLATE Latin1_General_CI_AS AS batch_name,
aa AS serial_from, bb AS serial_to,
CONVERT(varchar(99), BATCH) + ' - ' + LTRIM(RTRIM(NAME)) COLLATE Latin1_General_CI_AS AS batch_description
FROM
[IPAddress].database.dbo.tablename) AS h
FULL OUTER JOIN
dbo.othertablename AS b WITH (nolock) ON LTRIM(RTRIM(b.Batch_Name)) = h.batch_name COLLATE Latin1_General_CI_AS
AND h.serial_from = b.Start_Serial
AND h.serial_to = b.End_Serial
WHERE
(b.Batch_ID IS NULL)
我确认所选的语句运行正确,但当我运行修改视图语句时,返回以下信息:
Msg 4511, Level 16, State 1, Procedure vwViewNameHere_NotImportedyet, Line 3
Create View 或 Function 失败,因为未为第二列指定列名称。
之前我曾运行过一个 CREATE VIEW
语句来备份此视图定义,它没有出现任何错误。
COLLATE
并保留列名,但显然不是这样——我想这很有道理,因为它确实改变了列内容... - Alex Callard