我对SQL很新,而且在创建View时我在将Guid的数据类型转换为String时遇到了一些问题。在查看了这个问题之后,我不确定为什么以下语句会引发错误:
Create View or Function failed because no column name was specified for column 2.
说明:
CREATE VIEW CustomerContactView
AS
SELECT [Id]
,CAST([Guid] AS NVARCHAR(100))
,[ContactGuid]
,[MethodId]
,[Details]
,[OutcomeId]
,[ActionRequired]
,[IsValid]
FROM [Main].[dbo].[Customer_ContactLog]
非常感谢任何帮助,谢谢
答案 0 :(得分:2)
您只需要为从视图中选择时使用的该列提供新名称:
CREATE VIEW CustomerContactView
AS
SELECT [Id]
,CAST([Guid] AS NVARCHAR(100)) AS Guid
,[ContactGuid]
,[MethodId]
,[Details]
,[OutcomeId]
,[ActionRequired]
,[IsValid]
FROM [Main].[dbo].[Customer_ContactLog]
这是因为该列中的值是动态计算的,与表中的值无关。计算列是未物理存储在表中的虚拟列,因此DBMS无法使用表中的原始列名。
答案 1 :(得分:1)
在视图中,当您应用函数或以其他方式操作列时,连接多个列,类似于此类,您需要为该列添加别名:
CAST([Guid] AS NVARCHAR(100)) AS <some clever alias goes here>
。
答案 2 :(得分:1)
与错误完全相同:您未在视图中为第二列指定列名。如果按原样运行SELECT
,您会看到以下列名称:
ID(无列名)ContactGuid ......等。
将其更改为:
CREATE VIEW CustomerContactView
AS
SELECT [Id]
,CAST([Guid] AS NVARCHAR(100)) [Guid]
,[ContactGuid]
,[MethodId]
,[Details]
,[OutcomeId]
,[ActionRequired]
,[IsValid]
FROM [Main].[dbo].[Customer_ContactLog]