使用Join语句创建视图

时间:2018-12-27 06:14:36

标签: sql-server left-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   账本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”。

1 个答案:

答案 0 :(得分:0)

您得到

  

多部分标识符无法绑定

表中指定列不可用时的

例外。因此,请确保您的表中存在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]