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 子句中。