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查找表。或者,它在主查询中不可见。