首页 > 解决方案 > 使用 Join 语句创建视图

问题描述

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[view_item_ledger_entry](item_no, item_description, location, quantity)
AS
    SELECT 
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].[Item No_] AS item_no,
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item].[Description] AS item_description,
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].[Location Code] AS location,
        SUM([ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].Quantity) AS quantity
    FROM    
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry]
    LEFT OUTER JOIN 
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item] ON [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].[Item No_]=[ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item].[No_]
    WHERE    
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].[Item No_] LIKE '5%'
    GROUP BY 
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].[Item No_],
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry].[Location Code]

我的问题是:上面的 SQL 创建了一个视图,但我得到了很多错误:

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 20 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Item No_”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 20 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item.No_”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 21 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Item No_”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 22 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Item No_”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 23 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Location Code”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 14 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Item No_”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 15 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item.Description”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 16 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Location Code”。

消息 4104,级别 16,状态 1,过程 view_item_ledger_entry,第 17 行
无法绑定多部分标识符“ABGSRV11\ABIG.ASKUPROD.dbo.ASKU PLC$Item Ledger Entry.Quantity”。

标签: sql-serverleft-join

解决方案


你得到

无法绑定多部分标识符

当指定的列在您的表中不可用时出现异常。因此,请确保您的Select语句中列出的列存在于您的表中,并且您已指定正确的表名。

另外,我建议为连接使用别名,这样可以使编码更容易,并且您的代码对于以后可能正在调试它的其他人来说看起来更舒服。

您的上面的代码可以重写如下(仍然确保列名):

CREATE VIEW [dbo].[view_item_ledger_entry]
(
    item_no,
    item_description,
    location,
    quantity
)
AS
    SELECT 
        ENT.[Item No_] AS item_no,
        ITM.[Description] AS item_description,
        ENT.[Location Code] AS location,
        SUM(ENT.Quantity) AS quantity
    FROM 
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item Ledger Entry] ENT
    LEFT OUTER JOIN 
        [ABGSRV11\ABIG].ASKUPROD.dbo.[ASKU PLC$Item] ITM ON ENT.[Item No_]= ITM.[No_]
    WHERE 
        ENT.[Item No_] LIKE '5%'
    GROUP BY 
        ENT.[Item No_],
        ITM.[Description],
        ENT.[Location Code]

推荐阅读