Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 子查询时的大小写_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 子查询时的大小写

Sql 子查询时的大小写,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有以下疑问 SELECT Case when V.[Code Article] in (SELECT [Code Article] FROM [Prix Revient MPX CMR] c WHERE CONVERT(DATE, V.[Date Time]) = [DATE] and [CMR] = V.[Code Site] )

我有以下疑问

SELECT   Case 
           when  V.[Code Article] in 
              (SELECT   [Code Article]
              FROM     [Prix Revient MPX CMR]  c
              WHERE    CONVERT(DATE, V.[Date Time]) =  [DATE] and [CMR] = V.[Code Site] )
              then c.[Prix de revient réel] 
          ELSE     V.[Prix de Revient]  
        end as [Prix de Revient]
FROM     dbo.[Sales] V
我得到以下错误:

无法绑定多部分标识符“c.Prix de revient réel”


如何修改它?

您必须使用
子查询
加入

试试下面

SELECT CASE WHEN  V.[Code Article] IN (SELECT [Code Article] 
                                       FROM [Prix Revient MPX CMR]  c
                                       WHERE CONVERT(DATE, V.[Date Time]) =  [DATE] and [CMR] = V.[Code Site] 
                                       )
            THEN (SELECT [Prix de revient réel] FROM [Prix Revient MPX CMR] WHERE CONVERT(DATE, V.[Date Time]) =  [DATE] and [CMR] = V.[Code Site])
        ELSE     V.[Prix de Revient]  
        END AS [Prix de Revient]
FROM dbo.[Sales] V

如果按如下方式格式化查询:

SELECT (Case when V.[Code Article] in (SELECT c.[Code Article]
                                       FROM [Prix Revient MPX CMR]  c
                                       WHERE CONVERT(DATE, V.[Date Time]) =  c.[DATE] and c.[CMR] = V.[Code Site]
                                     )
             then c.[Prix de revient réel] 
             ELSE V.[Prix de Revient]  
        end) as [Prix de Revient]
FROM  dbo.[Sales] V;
那么问题就显而易见了。对于
then
子句,没有
c
。大概您想要一个
加入

select coalesce(c.[Prix de revient réel], V.[Prix de Revient]) as [Prix de Revient]
from dbo.[Sales] V left join
     [Prix Revient MPX CMR]  c
     on CONVERT(DATE, V.[Date Time]) =  c.[DATE] and
        c.[CMR] = V.[Code Site] and
        V.[Code Article] = c.[Code Article]

并拯救每一个亲英派的翻译工作<代码>无法绑定多部分标识符“c.Prix de revient réel”。子查询外部无法使用c.[Prix de revient réel],请提供表结构的一些详细信息、数据示例、,和预期结果。如果要选择表的列
Prix de revient réel
,则必须使用子查询或联接,该列是为
code文章
使用的s查找表。或者,它在主查询中不可见。