Создать представление с помощью оператора Join - PullRequest
0 голосов
/ 27 декабря 2018
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 * ​​1014 * Идентификатор из нескольких частей "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 $ Элемент Ввод в книгу.связаны.

Сообщение 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 Entry.Location Code"связаны.

Сообщение 4104, уровень 16, состояние 1, процедура view_item_ledger_entry, строка 17
Не удалось связать идентификатор из нескольких частей "ABGSRV11 \ ABIG.ASKUPROD.dbo.ASKU PLC $ Item Ledger Entry.Quantity".

1 Ответ

0 голосов
/ 27 декабря 2018

Вы получаете исключение

Multipart Identifier Не может быть связано

, если указанный столбец недоступен в вашей таблице.Поэтому убедитесь, что столбцы, перечисленные в ваших операторах 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]
...