我有这个视图源代码,写在一台带有SQL Server 2012和Latin1服务器和数据库整理的机器上:
SELECT TOP 100 PERCENT
W.AbteilungsNr AS Bereichsnummer,
W.LongCap AS Bereichsname,
convert(datetime,convert(varchar(10),(SELECT MAX(V.ZeitVon) FROM mna01HSQVorfallsmeldungen V INNER JOIN mna01HSQProtokolle P ON P.[ID]=V.ProtokollID WHERE P.WS_Bereich_ID=W.[ID] AND P.Category=4 AND V.ProposedCat IN (41)),104),104) AS DatumLetzterMTC,
convert(datetime,convert(varchar(10),(SELECT MAX(V.ZeitVon) FROM mna01HSQVorfallsmeldungen V INNER JOIN mna01HSQProtokolle P ON P.[ID]=V.ProtokollID WHERE P.WS_Bereich_ID=W.[ID] AND P.Category=4 AND V.ProposedCat IN (40)),104),104) AS DatumLetzterRWC,
convert(datetime,convert(varchar(10),(SELECT MAX(V.ZeitVon) FROM mna01HSQVorfallsmeldungen V INNER JOIN mna01HSQProtokolle P ON P.[ID]=V.ProtokollID WHERE P.WS_Bereich_ID=W.[ID] AND P.Category=4 AND V.ProposedCat IN (42,44)),104),104) AS DatumLetzterLTI,
convert(datetime,convert(varchar(10),(SELECT MAX(V.ZeitVon) FROM mna01HSQVorfallsmeldungen V INNER JOIN mna01HSQProtokolle P ON P.[ID]=V.ProtokollID WHERE P.WS_Bereich_ID=W.[ID] AND P.Category=4 AND V.ProposedCat IN (40,41,42,44)),104),104) AS DatumLetzterUnfall,
DATEDIFF(day,(SELECT MAX(V.ZeitVon) FROM mna01HSQVorfallsmeldungen V INNER JOIN mna01HSQProtokolle P ON P.[ID]=V.ProtokollID WHERE P.WS_Bereich_ID=W.[ID] AND P.Category=4 AND V.ProposedCat IN (40,41,42,44)),GETDATE()) AS TageUnfallfrei
FROM mna01HSQWerksstruktur W
WHERE W.objType=1
AND W.Reportable=1
ORDER BY
W.AbteilungsNr ASC
如您所见,此代码依赖于表示两个不同表的表别名W
和V
。
当我尝试在具有排序规则Finnish_Swedish_CI_AI的数据库上执行该操作时,它将失败并显示
Msg 207, Level 16, State 1, Procedure vwmna01HSQrptNoAccidentSince, Line 18
Invalid column name 'ID'
现在我已经完成了我的作业并且发现,在瑞典校对中,字母V和W被认为是相同的。当我们使用Z而不是W时,它可以工作。
我的问题仍然存在:
编辑:它发生在SSMS查询窗口中以及在代码中使用来自.NET SqlConnection的OleDB执行时。如果我们将它作为CREATE VIEW
语句的一部分执行,或作为如上所示的即席查询执行,则没有任何区别。
答案 0 :(得分:0)
你的问题可能是敏感的情况。检查您的表是否有“ID”列 - 不要误认为“Id”。修复你的程序。