当我尝试将以下代码添加到视图时:
SELECT [Albi-Anagrafe-Associati].AnaUnica,
[Albi-Anagrafe-Associati].Albo,
[Albi-Anagrafe-Associati].Comune,
[Albi-Anagrafe-Associati].ComunePDC,
IIf([Comune] <> [ComunePDC], 'NO', 'OK') AS Attenzione,
[Albi-Anagrafe-Associati].Paghe,
[Albi-Anagrafe-Associati].ContOrd,
[Albi-Anagrafe-Associati].ContSem
FROM [Albi-Anagrafe-Associati]
WHERE ( ( ( [Albi-Anagrafe-Associati].ComunePDC ) <> 'Extra Provincia' )
AND ( ( IIf([Comune] <> [ComunePDC], 'NO', 'OK') ) = 'NO' ) );
我收到错误:
函数参数列表出错:&#39;&lt;&#39;未识别。
无法解析查询文本。
但是当我在存储过程中添加相同的代码时,我没有错误。
行为不同的原因是什么?
答案 0 :(得分:1)
您的查询非常复杂,无法阅读。你听说过表别名吗?
Iterator
注意:
SELECT aa.AnaUnica, aa.Albo, aa.Comune, aa.ComunePDC,
(case when Comune <> ComunePDC then 'NO' end 'OK' end ) AS Attenzione,
aa.Paghe, aa.ContOrd, aa.ContSem
FROM [Albi-Anagrafe-Associati] aa
WHERE (aa.ComunePDC <> 'Extra Provincia' AND
Comune <> ComunePDC ; -- May need to check for `NULL` as well
到CASE
,因为前者是ANSI标准SQL,后者是MS Access的后兼容性。 答案 1 :(得分:1)
此错误来自视觉设计师。这显然还没有更新,以应对最新的语法添加。
不要使用它。无论如何,它是buugy并且非常有限。只需打开一个新的查询窗口并执行
CREATE VIEW dbo.SomeName
AS
/*Paste your code here*/
如果您的版本晚于2012年,它将正常工作。
您的代码中没有实际的语法错误,但有几件事情可以改进。
修复格式,删除不需要的两个部分名称并简化WHERE
子句和SELECT
列表结果
SELECT AnaUnica,
Albo,
Comune,
ComunePDC,
'NO' AS Attenzione, /*Guaranteed by the WHERE that [Comune] <> [ComunePDC]*/
Paghe,
ContOrd,
ContSem
FROM dbo.[Albi-Anagrafe-Associati]
WHERE ComunePDC NOT IN ('Extra Provincia',Comune);