Tsql 多部分标识符“…”&引用;无法约束
我收到错误(无法绑定多部分标识符“f.FormID”)。正在运行此查询:Tsql 多部分标识符“…”&引用;无法约束,tsql,subquery,identifier,Tsql,Subquery,Identifier,我收到错误(无法绑定多部分标识符“f.FormID”)。正在运行此查询: select f.FormID, f.Title, fv.UserName from Forms f join ( SELECT FormID FROM Reports WHERE (ReportID = @ReportID) UNION SELECT F
select f.FormID, f.Title, fv.UserName
from Forms f join (
SELECT FormID
FROM Reports
WHERE (ReportID = @ReportID)
UNION
SELECT FormRelations.ForigenFormID
FROM FormRelations INNER JOIN
Forms ON FormRelations.ForigenFormID = Forms.FormID
WHERE (FormRelations.PrimaryFormID =
(SELECT FormID
FROM Reports
WHERE (ReportID = @ReportID)))
) ids
on f.FormID = ids.FormID
LEFT OUTER JOIN (select top 1 UserName, FormID from FormValues where FormID = f.FormID and UserName = @UserName) fv
ON f.FormID = fv.FormID
请有人帮帮我:(
@蓝脚:
我想要这样的结果:
01304636-FABE-4A3E-9487-A14B012F9A61 item_1 1234567890
C0455E97-788A-4305-876A-A15000CFE928 item_2 1234567890
7719F37E-7021-4ABD-91ED-A15301830324 item_3 1234567890
如果您需要在子查询中使用别名,您可能需要查看如何使用
APPLY
操作符:
select f.FormID, f.Title, fv.UserName
from Forms f
join
(
SELECT FormID
FROM Reports
WHERE (ReportID = @ReportID)
UNION
SELECT FormRelations.ForigenFormID
FROM FormRelations
INNER JOIN Forms
ON FormRelations.ForigenFormID = Forms.FormID
WHERE (FormRelations.PrimaryFormID = (SELECT FormID
FROM Reports
WHERE (ReportID = @ReportID)))
) ids
on f.FormID = ids.FormID
CROSS APPLY
(
select top 1 UserName, FormID
from FormValues
where FormID = f.FormID
and UserName = @UserName
) fv
或者您可以使用行编号()
:
您不能在另一个部分中使用来自一个部分的数据。那么我应该怎么做?有什么建议吗?您好:)谢谢您的回答。它可以工作,但我也希望用户名的行为空。@Kardo查看我的编辑,我使用
row\u number()
包含了一个版本,非常感谢!太完美了:)你太棒了:)你也可以看看这个帖子吗?
select f.FormID, f.Title, fv.UserName
from Forms f
join
(
SELECT FormID
FROM Reports
WHERE (ReportID = @ReportID)
UNION
SELECT FormRelations.ForigenFormID
FROM FormRelations
INNER JOIN Forms
ON FormRelations.ForigenFormID = Forms.FormID
WHERE (FormRelations.PrimaryFormID = (SELECT FormID
FROM Reports
WHERE (ReportID = @ReportID)))
) ids
on f.FormID = ids.FormID
LEFT JOIN
(
select UserName, FormID,
ROW_NUMBER() over(PARTITION by FormID, UserName order by FormID) rn
from FormValues
where UserName = @UserName
) fv
on f.FormID = fv.FormID
and fv.rn = 1