sql-server - 使用 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”。
解决方案
你得到
无法绑定多部分标识符
当指定的列在您的表中不可用时出现异常。因此,请确保您的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]
推荐阅读
- python - 泛型类的类方法
- javascript - 用 Cypress 不计算 React 站点中的 DOM 元素?
- rust - Rust Crossclip 剪贴板的打印类型
- r - 如何将 R 中的数据框列表输出到 csv 文件,以便垂直列出数据框?
- python - 用于分类映射的多对一查找表
- javascript - 将正则表达式动态添加到 html 输入文本字段
- reactjs - 使用 useSelector 更新对象
- python - 接受字符串(数字表达式)中的用户输入并评估其值
- javascript - 函数似乎总是返回 true
- deployment - 如何从 Linux 捆绑适用于 Windows 的 Gtk-rs 和 rusqlite 程序?