请教:无法绑定由多个部分组成的标识符 "A.ID"。

idragonet 2012-01-03 04:23:37
          SELECT TOP 99999999
A3.ID AS MOID ,
A3.DocNo ,
-- A2.Code ,
A3.Department 生产部门ID ,
a3.ItemMaster ,
A4.Name 生产部门 ,
A.DocNo AS 销售订单号 ,
-- A5.Name ,
A5.Code ,
A5.ID ItemMasterID
--,
-- dbo.GM_RPT_ProductGather_Take_ItemMaster_1T2(A5.ID, A.ID,
-- 'name') AS 产品名称 ,
-- dbo.GM_RPT_ProductGather_Take_ItemMaster_1T2(A5.ID, A.ID,
-- 'code') AS 产品编码
FROM dbo.SM_SO A
INNER JOIN dbo.CBO_Project A2 ON A.DocNo = A2.Code
INNER JOIN dbo.MO_MO A3 ON A2.ID = A3.Project
INNER JOIN dbo.CBO_Department_Trl A4 ON ( A3.Department = A4.ID
AND a4.SysMLFlag = 'zh-CN'
)
JOIN CBO_ItemMaster A5 ON ( A5.ID = a3.ItemMaster )
JOIN (SELECT * FROM [dbo].RPT_ProductGather_Take_ItemMaster_Table(N'22222222',A.ID) ) A6
ON A6.code=A5.code
WHERE A.ID = 1001112220740918



消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "A.ID"。
问题出在:SELECT * FROM [dbo].RPT_ProductGather_Take_ItemMaster_Table(N'22222222',A.ID)

关键是A.ID

RPT_ProductGather_Take_ItemMaster_Table是一个多语句表值函数。

SQL该如何写才能通过呢??
...全文
339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2012-01-03
  • 打赏
  • 举报
回复
SELECT TOP 99999999
A3.ID AS MOID ,
A3.DocNo ,
-- A2.Code ,
A3.Department 生产部门ID ,
a3.ItemMaster ,
A4.Name 生产部门 ,
A.DocNo AS 销售订单号 ,
-- A5.Name ,
A5.Code ,
A5.ID ItemMasterID
--,
-- dbo.GM_RPT_ProductGather_Take_ItemMaster_1T2(A5.ID, A.ID,
-- 'name') AS 产品名称 ,
-- dbo.GM_RPT_ProductGather_Take_ItemMaster_1T2(A5.ID, A.ID,
-- 'code') AS 产品编码
FROM dbo.SM_SO A
INNER JOIN dbo.CBO_Project A2 ON A.DocNo = A2.Code
INNER JOIN dbo.MO_MO A3 ON A2.ID = A3.Project
INNER JOIN dbo.CBO_Department_Trl A4 ON ( A3.Department = A4.ID
AND a4.SysMLFlag = 'zh-CN'
)
JOIN CBO_ItemMaster A5 ON ( A5.ID = a3.ItemMaster )
JOIN (SELECT * FROM [dbo].RPT_ProductGather_Take_ItemMaster_Table(N'22222222',1001112220740918) ) A6
ON A6.code=A5.code
WHERE A.ID = 1001112220740918
唐诗三百首 2012-01-03
  • 打赏
  • 举报
回复

SELECT TOP 99999999
A3.ID AS MOID ,
A3.DocNo ,
-- A2.Code ,
A3.Department 生产部门ID ,
a3.ItemMaster ,
A4.Name 生产部门 ,
A.DocNo AS 销售订单号 ,
-- A5.Name ,
A5.Code ,
A5.ID ItemMasterID
--,
-- dbo.GM_RPT_ProductGather_Take_ItemMaster_1T2(A5.ID, A.ID,
-- 'name') AS 产品名称 ,
-- dbo.GM_RPT_ProductGather_Take_ItemMaster_1T2(A5.ID, A.ID,
-- 'code') AS 产品编码
FROM dbo.SM_SO A
INNER JOIN dbo.CBO_Project A2 ON A.DocNo = A2.Code
INNER JOIN dbo.MO_MO A3 ON A2.ID = A3.Project
INNER JOIN dbo.CBO_Department_Trl A4 ON ( A3.Department = A4.ID
AND a4.SysMLFlag = 'zh-CN'
)
JOIN CBO_ItemMaster A5 ON ( A5.ID = a3.ItemMaster )
cross apply [dbo].RPT_ProductGather_Take_ItemMaster_Table(N'22222222',A.ID) ) A6
WHERE A.ID = 1001112220740918
idragonet 2012-01-03
  • 打赏
  • 举报
回复
非常感谢Joe_TJ!在SQL SERVER 20008解决问题。

火才松 2012-01-03
  • 打赏
  • 举报
回复
JOIN不持这个直接用表值函数,可以考虑使用Cross Apply:
Cross Apply (SELECT * FROM [dbo].RPT_ProductGather_Take_ItemMaster_Table(N'22222222',A.ID) ) A6

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧