[英]Msg 207, Level 16, State 1, Line 3 Invalid column name 'VSERV'
[英]SQL View Error - Msg 207, Level 16, State 1, Procedure OrderItems_vw, Line 16 [Batch Start Line 0] Invalid column name 'Brand'
我从不使用视图,所以我对它们的工作方式和视图的目的有点陌生。 无论如何,我在 sp 上遇到错误。 我认为这与我的观点有关。 很确定视图已损坏,需要重建它。 至少从逻辑上讲,这对我来说是个问题。 我不知道,如果是这样的话,我也不知道如何重建它。
错误:
SP:
DECLARE
-- Add the parameters for the stored procedure here
@StatusType varchar(32) = 'Order',
@Filter varchar(32) = 'Bolingbrook',
@Station varchar(32) = '',
@AttrValue varchar(128) = ''
--AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @Date datetime
SET @Date = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
IF @StatusType = 'Order'
BEGIN
SELECT @Filter AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType
UNION
SELECT @Filter AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT @Filter AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, COUNT(i.OrderStatus) AS Total
FROM (
SELECT DISTINCT @Filter AS Facility, o.DueDate, s.StatusSort, s.StatusDescription
FROM Orders o WITH (READUNCOMMITTED)
CROSS JOIN Status s
WHERE s.StatusType = @StatusType AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN Orders i WITH (READUNCOMMITTED) ON i.OrderStatus = s.StatusDescription AND i.DueDate = s.DueDate AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR i.DueDate >= @Date)
GROUP BY s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT @Filter AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM Orders WITH (READUNCOMMITTED)
WHERE ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR DueDate >= @Date)
GROUP BY DueDate
ORDER BY Filter, DueDate, StatusSort
END
IF @StatusType = 'Production'
BEGIN
IF @Station = ''
BEGIN
SELECT @Filter AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT s.ProductGroup AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, SUM(ISNULL(i.ProductionQuantity,0)) AS Total--, COUNT(i.ProductionStatus) AS Total
FROM (
SELECT DISTINCT o.ProductGroup, o.DueDate, s.StatusSort, s.StatusDescription
FROM OrderItemProduction_vw o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType+'_'+@Filter AND o.ProductGroup = @Filter AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN OrderItemProduction_vw i WITH (READUNCOMMITTED) ON i.ProductGroup = @Filter AND i.ProductionStatus = s.StatusDescription AND i.DueDate = s.DueDate AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR (i.DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY s.ProductGroup, s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT ProductGroup AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM OrderItemProduction_vw WITH (READUNCOMMITTED)
WHERE ProductGroup = @Filter AND ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR (DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY ProductGroup, DueDate
ORDER BY Filter, DueDate, StatusSort
END
ELSE IF @Station = 'UV'
BEGIN
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT s.ProductGroup AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, SUM(ISNULL(i.ProductionQuantity,0)) AS Total--, COUNT(i.ProductionStatus) AS Total
FROM (
SELECT DISTINCT o.ProductGroup+' '+o.UV AS ProductGroup, o.DueDate, s.StatusSort, s.StatusDescription
FROM OrderItemProduction_vw o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType+'_'+@Filter AND o.ProductGroup = @Filter AND o.UV = @AttrValue AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN OrderItemProduction_vw i WITH (READUNCOMMITTED) ON i.ProductGroup = @Filter AND i.ProductionStatus = s.StatusDescription AND i.DueDate = s.DueDate AND i.UV = @AttrValue AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR (i.DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY s.ProductGroup, s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT ProductGroup+' '+UV AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM OrderItemProduction_vw WITH (READUNCOMMITTED)
WHERE ProductGroup = @Filter AND UV = @AttrValue AND ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR (DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY ProductGroup+' '+UV, DueDate
ORDER BY Filter, DueDate, StatusSort
END
ELSE IF @Station = 'Diecut'
BEGIN
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT s.ProductGroup AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, SUM(ISNULL(i.ProductionQuantity,0)) AS Total--, COUNT(i.ProductionStatus) AS Total
FROM (
SELECT DISTINCT o.ProductGroup+' '+o.PaperTrim AS ProductGroup, o.DueDate, s.StatusSort, s.StatusDescription
FROM OrderItemProduction_vw o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType+'_'+@Filter AND o.ProductGroup = @Filter AND o.PaperTrim = @AttrValue AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN OrderItemProduction_vw i WITH (READUNCOMMITTED) ON i.ProductGroup = @Filter AND i.ProductionStatus = s.StatusDescription AND i.DueDate = s.DueDate AND i.PaperTrim = @AttrValue AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR (i.DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY s.ProductGroup, s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT ProductGroup+' '+PaperTrim AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM OrderItemProduction_vw WITH (READUNCOMMITTED)
WHERE ProductGroup = @Filter AND PaperTrim = @AttrValue AND ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR (DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY ProductGroup+' '+PaperTrim, DueDate
ORDER BY Filter, DueDate, StatusSort
END
ELSE IF @Station = 'Print'
BEGIN
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT s.ProductGroup AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, SUM(ISNULL(i.ProductionQuantity,0)) AS Total--, COUNT(i.ProductionStatus) AS Total
FROM (
SELECT DISTINCT o.ProductGroup+' '+o.Substrate AS ProductGroup, o.DueDate, s.StatusSort, s.StatusDescription
FROM OrderItemProduction_vw o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType+'_'+@Filter AND o.ProductGroup = @Filter AND o.Substrate = @AttrValue AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN OrderItemProduction_vw i WITH (READUNCOMMITTED) ON i.ProductGroup = @Filter AND i.ProductionStatus = s.StatusDescription AND i.DueDate = s.DueDate AND i.Substrate = @AttrValue AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR (i.DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY s.ProductGroup, s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT ProductGroup+' '+Substrate AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM OrderItemProduction_vw WITH (READUNCOMMITTED)
WHERE ProductGroup = @Filter AND Substrate = @AttrValue AND ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR (DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY ProductGroup+' '+Substrate, DueDate
ORDER BY Filter, DueDate, StatusSort
END
ELSE IF @Station = 'Press'
BEGIN
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter+' '+@AttrValue AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT s.ProductGroup AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, SUM(ISNULL(i.ProductionQuantity,0)) AS Total--, COUNT(i.ProductionStatus) AS Total
FROM (
SELECT DISTINCT o.ProductGroup+' '+o.Press AS ProductGroup, o.DueDate, s.StatusSort, s.StatusDescription
FROM OrderItemProduction_vw o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType+'_'+@Filter AND o.ProductGroup = @Filter AND o.Press = @AttrValue AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN OrderItemProduction_vw i WITH (READUNCOMMITTED) ON i.ProductGroup = @Filter AND i.ProductionStatus = s.StatusDescription AND i.DueDate = s.DueDate AND i.Press = @AttrValue AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR (i.DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY s.ProductGroup, s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT ProductGroup+' '+Press AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM OrderItemProduction_vw WITH (READUNCOMMITTED)
WHERE ProductGroup = @Filter AND Press = @AttrValue AND ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR (DueDate >= @Date AND OrderStatus NOT IN ('Cancelled')))
GROUP BY ProductGroup+' '+Press, DueDate
ORDER BY Filter, DueDate, StatusSort
END
END
IF @StatusType = 'ShipMethod'
BEGIN
SELECT @Filter AS Filter, NULL AS DueDate, StatusSort, StatusDescription, 0 AS Total
FROM [Status]
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT @Filter AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, COUNT(i.OrderStatus) AS Total
FROM (
SELECT DISTINCT @Filter AS Facility, o.DueDate, s.StatusSort, s.StatusDescription
FROM Orders o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
LEFT OUTER JOIN Orders i WITH (READUNCOMMITTED) ON i.shipMethod = s.StatusDescription AND i.DueDate = s.DueDate AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR i.DueDate >= @Date)
GROUP BY s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT @Filter AS Filter, DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM Orders WITH (READUNCOMMITTED)
WHERE ((DueDate < @Date AND OrderStatus NOT IN ('Shipped','Cancelled')) OR DueDate >= @Date)
GROUP BY DueDate
ORDER BY Filter, DueDate, StatusSort
END
IF @StatusType = 'Packaging'
BEGIN
SELECT @Filter AS Filter, NULL AS DueDate, s.StatusSort, s.StatusDescription, 0 AS Total
FROM [Status] s
--INNER JOIN Packaging p ON p.Facility = @Filter AND p.PackagingCode = s.StatusDescription
WHERE StatusType = @StatusType+'_'+@Filter
UNION
SELECT @Filter AS Filter, NULL AS DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, 0 AS Total
UNION
SELECT @Filter AS Filter, s.DueDate, s.StatusSort, s.StatusDescription, COUNT(i.Packaging) AS Total
FROM (
SELECT DISTINCT @Filter AS Facility, o.DueDate, s.StatusSort, s.StatusDescription
FROM Orders o WITH (READUNCOMMITTED)
CROSS JOIN [Status] s
WHERE s.StatusType = @StatusType AND ((o.DueDate < @Date AND o.OrderStatus NOT IN ('Shipped','Cancelled')) OR o.DueDate >= @Date)) s
INNER JOIN Packaging p ON p.PackagingCode = s.StatusDescription
LEFT OUTER JOIN Orders i WITH (READUNCOMMITTED) ON i.Packaging = s.StatusDescription AND i.DueDate = s.DueDate AND ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR i.DueDate >= @Date)
GROUP BY s.DueDate, s.StatusSort, s.StatusDescription
UNION
SELECT @Filter AS Filter, i.DueDate, 999.0000 AS StatusSort, 'Total' AS StatusDescription, COUNT(*) AS Total
FROM Orders i WITH (READUNCOMMITTED)
INNER JOIN Packaging p ON p.PackagingCode = i.Packaging
WHERE ((i.DueDate < @Date AND i.OrderStatus NOT IN ('Shipped','Cancelled')) OR i.DueDate >= @Date)
GROUP BY i.DueDate
ORDER BY Filter, DueDate, StatusSort
END
END
这是它自己的视图:
SELECT TOP (1000) [OrderId]
,[version]
,[OrderNo]
,[OriginalOrderNo]
,[RedoType]
,[CustomerNo]
,[OrderDate]
,[OrderDateString]
,[RequestedDueDate]
,[RequestedDueDateString]
,[Brand]
,[RushService]
,[ShipMethod]
,[ShippingAttention]
,[ShippingAddressee]
,[ShippingAddressLine1]
,[ShippingAddressLine2]
,[ShippingCity]
,[ShippingState]
,[ShippingZip]
,[ShippingCountry]
,[ShippingPhone]
,[OrderNote]
,[ItemNote]
,[DateOrdered]
,[DueDate]
,[Items]
,[TotalItems]
,[Packaging]
,[RandomNumber]
,[ShipDate]
,[ShippingNotes]
,[DateShipped]
,[Carrier]
,[ShipService]
,[Tracking]
,[Units]
,[Weight]
,[RejectCode]
,[RejectReason]
,[OrderReceived]
,[OrderStatus]
,[OrderStatusDate]
,[TransmissionDate]
,[TransmissionResponse]
,[Staging]
,[ItemId]
,[LineNo]
,[ItemNo]
,[SKU]
,[Description]
,[PaperType]
,[PaperTrim]
,[Pages]
,[Quantity]
,[unitPrice]
,[ProductType]
,[ItemNum]
,[ItemStatus]
,[ItemStatusDate]
,[Orientation]
,[Substrate]
,[SubstrateWeight]
,[SubstrateColor]
,[Inks]
,[UV]
,[SKUDescription]
,[ProductGroup]
,[Facility]
,[ProductName]
,[Size]
,[Cost]
,[Price]
,[Retail]
,[UnitWeight]
,[ProductCategory]
,[ProductSKUCode]
,[Permutations]
,[Press]
,[TicketTemplate]
,[isActive]
,[SubItemId]
,[SubLineNo]
,[SubItemNo]
,[SubSKU]
,[SubDescription]
,[SubPaperType]
,[SubPaperTrim]
,[SubPages]
,[SubQuantity]
,[SubunitPrice]
,[SubProductType]
,[SubItemNum]
,[SubItemStatus]
,[SubItemStatusDate]
,[SubOrientation]
,[SubSubstrate]
,[SubSubstrateWeight]
,[SubSubstrateColor]
,[SubInks]
,[SubUV]
,[SubSKUDescription]
,[SubProductGroup]
,[SubFacility]
,[SubProductName]
,[SubSize]
,[SubCost]
,[SubPrice]
,[SubRetail]
,[SubUnitWeight]
,[SubProductCategory]
,[SubProductSKUCode]
,[SubPermutations]
,[SubPress]
,[SubTicketTemplate]
,[SubisActive]
FROM [拼贴].[dbo].[OrderItems_vw]
当我尝试查询视图时出现错误。 所以我认为这与根本原因有关:
消息 207,级别 16,State 1,过程 OrderItems_vw,第 16 行 [批处理开始行 0] 列名“品牌”无效。 消息 207,级别 16,State 1,过程 OrderItems_vw,第 18 行 [批处理开始行 0] 列名“品牌”无效。 消息 207,级别 16,State 1,过程 OrderItems_vw,第 3 行 [批处理开始行 0] 列名“品牌”无效。 消息 4413,级别 16,State 1,第 118 行由于绑定错误而无法使用视图或 function 'Collage.dbo.OrderItems_vw'。
请参阅此以获取相关答案。 相关视图上的基础表已修改,您需要使用 sp_refreshview 重新编译视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.