SQL 无法绑定由多部分组成的标识符“”。 UNION 加 JOIN
SQL The multi-part identifier "" could not be bound. UNION plus JOIN
我在将字段 T.TEXTE_0 添加到以下查询时遇到问题,我得到 "The multi-part identifier "T.TEXTE_0" 无法绑定。"
最终我想将它添加到两个 SELECT 中。
有什么想法吗?
SELECT B.BOMSEQ_0 BOMSEQ,
case when B1.ITMREF_0 IS NOT NULL then NULL else B.CPNITMREF_0 end as CPNITREF,
case when B1.ITMREF_0 IS NOT NULL then NULL else B.YREF_0 end as YREF,
B.BOMTEXNUM_0, T.TEXTE_0,
B1.BOMSEQ_0, B1.CPNITMREF_0, B1.YREF_0, B1.BOMTEXNUM_0, NULL
FROM [BOMD] B
INNER JOIN [BOMD] B1
ON B.CPNITMREF_0=B1.ITMREF_0
AND B.BOMALT_0=B1.BOMALT_0
WHERE B.ITMREF_0='50'
and B.BOMALT_0= 1
UNION ALL
SELECT B.BOMSEQ_0, B.CPNITMREF_0, B.YREF_0, B.BOMTEXNUM_0, T.TEXTE_0,
NULL, NULL, NULL, NULL, NULL
FROM [BOMD] B
LEFT JOIN [TEXCLOB] AS T
ON B.BOMTEXNUM_0=T.CODE_0
WHERE B.ITMREF_0='50'
and B.BOMALT_0= 1
ORDER BY BOMSEQ, BOMSEQ_0
您不能在 UNION
"boundary" 中使用别名:第一行中的第一个实例使用的别名直到 UNION
的第二部分才定义。
例如,您需要将此字段添加到 SELECT
周围的 UNION
-ed SELECT
中,例如
SELECT
x.*
, T.TEXTE_0
from
(
SELECT B.BOMSEQ_0 ...
FROM [BOMD] B
INNER JOIN [BOMD] B1 ON B.CPNITMREF_0=B1.ITMREF_0
AND B.BOMALT_0=B1.BOMALT_0
WHERE B.ITMREF_0='50'and B.BOMALT_0= 1
UNION ALL
SELECT B.BOMSEQ_0, ...
FROM [BOMD] B
WHERE B.ITMREF_0='50'
and B.BOMALT_0= 1
) x
LEFT JOIN [TEXCLOB] AS T ON x.BOMTEXNUM_0=T.CODE_0
ORDER BY x.BOMSEQ, x.BOMSEQ_0
错误在并集的第一个 select 中。您在第一行的末尾 selecting T.TEXTE_0,但您没有将 select 连接到 TEXCLOB table。如果您希望该字段出现在两个 select 中,那么您还需要将连接添加到第一个 select 子句中。
我在将字段 T.TEXTE_0 添加到以下查询时遇到问题,我得到 "The multi-part identifier "T.TEXTE_0" 无法绑定。"
最终我想将它添加到两个 SELECT 中。 有什么想法吗?
SELECT B.BOMSEQ_0 BOMSEQ,
case when B1.ITMREF_0 IS NOT NULL then NULL else B.CPNITMREF_0 end as CPNITREF,
case when B1.ITMREF_0 IS NOT NULL then NULL else B.YREF_0 end as YREF,
B.BOMTEXNUM_0, T.TEXTE_0,
B1.BOMSEQ_0, B1.CPNITMREF_0, B1.YREF_0, B1.BOMTEXNUM_0, NULL
FROM [BOMD] B
INNER JOIN [BOMD] B1
ON B.CPNITMREF_0=B1.ITMREF_0
AND B.BOMALT_0=B1.BOMALT_0
WHERE B.ITMREF_0='50'
and B.BOMALT_0= 1
UNION ALL
SELECT B.BOMSEQ_0, B.CPNITMREF_0, B.YREF_0, B.BOMTEXNUM_0, T.TEXTE_0,
NULL, NULL, NULL, NULL, NULL
FROM [BOMD] B
LEFT JOIN [TEXCLOB] AS T
ON B.BOMTEXNUM_0=T.CODE_0
WHERE B.ITMREF_0='50'
and B.BOMALT_0= 1
ORDER BY BOMSEQ, BOMSEQ_0
您不能在 UNION
"boundary" 中使用别名:第一行中的第一个实例使用的别名直到 UNION
的第二部分才定义。
例如,您需要将此字段添加到 SELECT
周围的 UNION
-ed SELECT
中,例如
SELECT
x.*
, T.TEXTE_0
from
(
SELECT B.BOMSEQ_0 ...
FROM [BOMD] B
INNER JOIN [BOMD] B1 ON B.CPNITMREF_0=B1.ITMREF_0
AND B.BOMALT_0=B1.BOMALT_0
WHERE B.ITMREF_0='50'and B.BOMALT_0= 1
UNION ALL
SELECT B.BOMSEQ_0, ...
FROM [BOMD] B
WHERE B.ITMREF_0='50'
and B.BOMALT_0= 1
) x
LEFT JOIN [TEXCLOB] AS T ON x.BOMTEXNUM_0=T.CODE_0
ORDER BY x.BOMSEQ, x.BOMSEQ_0
错误在并集的第一个 select 中。您在第一行的末尾 selecting T.TEXTE_0,但您没有将 select 连接到 TEXCLOB table。如果您希望该字段出现在两个 select 中,那么您还需要将连接添加到第一个 select 子句中。