如何解决视图错误 - 创建视图或函数失败,因为没有为列 1
我正在尝试将我的视图更新为 xml 格式。我不断收到同样的错误,但我已经为所有列设置了别名.... 我已经验证每列都有一个别名。我在下面包含了错误。
创建视图或函数失败,因为没有为第 1 列指定列名。
感谢任何帮助。
USE [SANDBOX_2021]
GO
/****** Object: View [dbo].[vw_BartenderLabelQuery_V2] Script Date: 5/7/2021 1:00:17 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER view [dbo].[vw_BartenderLabelQuery_V2] as
Select T0.ItemCode as 'ItemCode',T0.ItemName 'ItemName',T0.U_Genus_Code 'Genus',T0.FrgnName 'ForeignName',T0.U_LabelDesc 'LabelDescription',SUBSTRING(T0.ItemName,PATINDEX('%[0-9]%',T0.ItemName),LEN(T0.ItemName)) 'ItemName2',cast(T1.DocNum as varchar(50)) 'ProductionOrder',cast(T1.DocNum as varchar(50))'BatchNumber',cast(Convert(date,T1.DueDate,112) as varchar(max)) 'ManufactureDate',cast(convert(date,T1.Duedate + T0.U_ExpirationDays,112) as varchar(max)) 'ExpirationDate','0' 'StartQtyLabels',cast(FLOOR(T1.PlannedQty/T0.U_NetContents) as nvarchar(max)) 'EndQtyLabels',T0.U_StaticPressure 'StaticPressure',T0.U_HeaterSettings 'HeaterSettings',T0.U_DynamicPressure 'DynamicPressure',T0.U_HoseHeaters 'HoseHeaters',T0.U_StorageTemp 'StorageTemp',T0.U_ShelfLife 'ShelfLife',Char(34) + T0.U_MixingType + Char(34) 'MixingType',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34)from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 23 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select top 1 U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 23 and U_RecordDescription = T0.U_MixingType))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 23 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select top 1 U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 23 and U_RecordDescription = T0.U_MixingType)) end 'MixingTypeSecondLanguage',cast(T0. U_NetContents as nvarchar(max)) + ' ' + Cast(T0.InvntryUom as nvarchar(max)) 'NetContentsLabel',T0.U_Spec 'Spec',T0.U_Color 'Color',T0.U_Reactivity 'Reactivity',T0.U_BorderColor 'BorderColor',char(34) + T0.U_Application + cHAR(34) 'Application',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application)) end 'ApplicationSecondLanguauge',char(34) + T0.U_Danger + char(34) 'Danger',char(34) + T0.U_Danger2 + char(34) 'Danger2',char(34) + T0.U_Danger3 + char(34) 'Danger3',char(34) + T0.U_Danger4 + char(34)'Danger4',char(34) + T0.U_Danger5 + char(34)'Danger5',char(34) + T0.U_Danger6 + char(34)'Danger6',char(34) + T0.U_Danger7 + char(34)'Danger7',char(34) + T0.U_Danger8 + char(34) 'Danger8',char(34) + T0.U_Danger9 + char(34) 'Danger9',char(34) + T0.U_Danger10 + char(34) 'Danger10',char(34) + T0.U_Danger11 + char(34)'Danger11',char(34) + T0.U_Danger12 + char(34) 'Danger12',char(34) + T0.U_Danger13 + char(34) 'Danger13',char(34) + T0.U_Danger14 + char(34) 'Danger14',char(34) + ' ' + char(34) 'Danger15'
--,char(34) + T0.U_Danger14 + char(34) 'Danger15',char(34) + T0.U_ApprovalsCompliance + char(34) 'ApprovalsCompliance',T0.U_ApprovalsCompliance2 'ApprovalsCompliance2',T0.U_ApprovalsCompliance3 'Approvalscompliance3',T0.U_ApprovalsCompliance4 'ApprovalsCompliance4',T0.U_ApprovalsCompliance5 'ApprovalsCompliance5',char(34) + T0.U_Precaution + char(34) 'Precaution',char(34) + T0.U_Precaution2 + char(34) 'Precaution2',char(34) + T0.U_Precaution3 + char(34) 'Precaution3',char(34) + T0.U_Precaution4 + char(34) 'Precaution4',char(34) + T0.U_Precaution5 + char(34) 'Precaution5',char(34) + T0.U_Precaution6 + char(34) 'Precaution6',char(34) + T0.U_Precaution7 + char(34) 'Precaution7',char(34) + T0.U_Precaution8 + char(34) 'Precaution8',char(34) + T0.U_Precaution9 + char(34) 'Precaution9',char(34) + T0.U_Precaution10 + char(34) 'DocID',char(34) + T0.U_Warning + Char(34) 'Warning',char(34) + T0.U_Warning2 + Char(34)'Warning2',char(34) + T0.U_Warning3 + Char(34) 'Warning3',char(34) + T0.U_Warning4 + Char(34) 'Warning4',char(34) + T0.U_Warning5 + Char(34) 'Warning5',char(34) + T0.U_Warning6 + Char(34) 'Warning6',char(34) + T0.U_Warning7 + Char(34)'Warning7',char(34) + T0.U_Warning8 + Char(34) 'Warning8',char(34) + T0.U_Warning9 + Char(34) 'Warning9',char(34) + T0.U_Warning10 + Char(34) 'Warning10',char(34) + T0.U_Warning11 + Char(34) 'Warning11',T0.U_MixWell 'MixWell',char(34) + T0.U_MixingType2 + char(34) 'MixingType2',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34)from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 23 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 23 and U_RecordDescription = T0.U_MixingType2))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 23 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 23 and U_RecordDescription = T0.U_MixingType2)) end 'MixingTypeSecondLanguage2',char(34) + T0.U_MixingType3 + char(34) 'MixingType3',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 23 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 23 and U_RecordDescription = T0.U_MixingType3))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 23 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 23 and U_RecordDescription = T0.U_MixingType3)) end 'MixingTypeSecondLanguage3',T0.U_LowVoc 'LowVoc',T0.U_Recirculate 'DoNotRecirculate',T0.U_CodeReport 'CodeReport',T0.U_IconSet 'IconSet',T0.U_LabelEntry 'LabelEntry',T0.U_Background 'Background',Char(34) + T0.U_Application2 + Char(34) 'Application2',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application2))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application2)) end 'ApplicationSecondLanguauge2',Char(34) + T0.U_Application3 + Char(34) 'Application3',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application3))
when T0.U_ApplicationSL = 'French' then (Select LNS.U_RecordDescription from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application3)) end 'ApplicationSecondLanguauge3',Char(34) + T0.U_Application4 + Char(34) 'Application4',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application4))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application4)) end 'ApplicationSecondLanguauge4',Char(34) + T0.U_Application5 + Char(34) 'Application5',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application5))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application5)) end 'ApplicationSecondLanguauge5',Char(34) + T0.U_Application6 + Char(34) 'Application6',Case when T0.U_ApplicationSL = 'Spanish' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'S' and LNS.U_RecordID = (Select U_RecordID + 1 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application6))
when T0.U_ApplicationSL = 'French' then (Select char(34) + LNS.U_RecordDescription + Char(34) from [@UDT_BARTENDER_LINES] LNS where LNS.DocEntry = 21 and LNS.U_LanguageGroup = 'F' and LNS.U_RecordID = (Select U_RecordID + 2 from [@UDT_BARTENDER_LINES] where DocEntry = 21 and U_RecordDescription = T0.U_Application6)) end 'ApplicationSecondLanguauge6'
from OITM T0 with(nolock)
Inner Join OWOR T1 with(nolock) on T0.ItemCode = T1.ItemCode
left join OITL T2 with(nolock) on T1.DocEntry = T2.BaseEntry and T2.BaseType = 202 and T2.DocType = 60
left Join ITL1 T3 with(nolock) on T2.LogEntry = T3.LogEntry
for xml auto;
GO
解决方法
我已验证每列都有一个别名
这只是控制在 XML 中调用哪些元素,单列 XML 结果集仍然需要列名。
如果您只是单独运行 SELECT
,则 SQL Server 给出的隐式列名称为 XML_F52E2B61-18A1-11d1-B105-00805F49916B
。坚持这一点确实有一个优势,因为 SSMS 确实将其视为 XML 而不是 ntext
。
您可以在视图名称之后声明别名的名称,如下所示
ALTER VIEW [dbo].[vw_BartenderLabelQuery_V2]([XML_F52E2B61-18A1-11d1-B105-00805F49916B]) as
Select T0.ItemCode ...
FOR XML AUTO;
你也可以
ALTER VIEW [dbo].[vw_BartenderLabelQuery_V2]
as
SELECT (SELECT T0.ItemCode ... FOR XML AUTO,TYPE) AS X
不幸的是,这两种方法都没有保留 XML SELECT
根计划运算符
因此与直接运行 SELECT
相比,这两种方法都可能处于 a performance disadvantage
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。