内部连接和IIF中的错误

时间:2013-06-26 17:52:01

标签: sql-server ms-access sql-server-2012 inner-join iif

我希望你能帮我解决这两个问题。我将一堆来自Accessfile的代码复制到MSSQL Server中以创建一些视图。 到目前为止,一切都运行良好,但现在我卡住了......

一个问题与" IIF" -Command:

有关
IIf([T024_ArtStamm]![C002] Like "A*",[dbo_T023_ArtPreise]![C006],[A PreisListe 01]![C013]) AS Verrechnungspreis

我把它改为:

IIf([Buran.dbo.T024_ArtStamm].[c002] like 'A%',
    [Buran.dbo.T023_ArtPreise].[C006],
    [Buran.dbo.A_PreisListe_01].[C013]) AS Verrechnungspreis

对我而言看起来是正确的。但服务器有一些问题......

Msg 156, Level 15, State 1, Line 12
Incorrect syntax near the keyword 'like'.

我试过' ='同时我也没想到了......

第二个问题与内部联接有关: 在Access中再次运行正常:

Select [...] 
FROM ((((T024_ArtStamm INNER JOIN 
dbo_t057 AS dbo_T057_ArtZusatz ON
(T024_ArtStamm.c106 = dbo_T057_ArtZusatz.c000) AND 
(T024_ArtStamm.mesocomp = dbo_T057_ArtZusatz.mesocomp) AND 
(T024_ArtStamm.mesoyear = dbo_T057_ArtZusatz.mesoyear)) INNER JOIN [--goes on for a while--]

我转换了所有表格都可以找到......

Select [...] 
--Line 54
    FROM ((((Buran.dbo.T024_ArtStamm INNER JOIN 
--/
    CWLDATEN_91.dbo.t057 AS Buran.dbo.T057_ArtZusatz ON 
    (Buran.dbo.T024_ArtStamm.c106 = dbo.T057_ArtZusatz.c000) AND 
    (Buran.dbo.T024_ArtStamm.mesocomp = dbo.T057_ArtZusatz.mesocomp) AND 
    (Buran.dbo.T024_ArtStamm.mesoyear = dbo.T057_ArtZusatz.mesoyear)) INNER JOIN [--and it goes on--]

但错误是

Msg 102, Level 15, State 1, Line 54 Incorrect syntax near 'Buran'. 

我检查了所有表格 - 它们存在。 我尝试使用Squirrel SQL而不是SQL Server管理器并获得相同的错误...

我哪里错了?

1 个答案:

答案 0 :(得分:0)

你有什么版本的sql server ??? iif在2008R2之前版本不存在

对于你的第二个问题,你的错误是在“别名”中,你必须写“Tables AS aliasName”,但你有“Table AS Database.Table”