在连接派生表时获取"未为列1指定列"

Mit*_*hil 9 sql-server join

我正在写一个left join并得到一个

没有为列1"错误指定列.

我究竟做错了什么?

LEFT JOIN 
(
   SELECT  CASE WHEN COUNT(*) > 1 THEN '' ELSE mycolumn END
   FROM 
    (
        SELECT code_value 
        FROM allocation 
        WHERE allocation.id='[val]'
        GROUP BY code_value
    ) grp
   GROUP BY code_value
) AS code4table
ON code4table.itemid = table1.id
Run Code Online (Sandbox Code Playgroud)

如果所有值都相同,我想返回code_value值,否则返回''我猜我还需要code4table.itemid在我的select查询中包含但不确定如何.

在此先感谢您的帮助.

Stu*_*tLC 12

您需要一个列别名(ALIASCOLUMN如下所示):

LEFT JOIN (
   SELECT  CASE WHEN COUNT(*) > 1 THEN '' ELSE mycolumn END AS ALIASCOLUMN
   FROM
   ...
) AS ALIASTABLE
ON ALIASTABLE.ALIASCOLUMN = outertable.column
Run Code Online (Sandbox Code Playgroud)

在你的情况下,ALIASCOLUMN名称应该是itemid为了匹配外连接命名.

(因为你获得与案件的新列/时,即使你有一个名为列mycolumnELSE,则SQL不会违约派生列名这一点).如果这样做有意义,您可以保留相同的列名(mycolumn)并更改最终ON匹配.