Ich habe eine Abfrage in SQL Server geschrieben, die ordnungsgemäß ausgeführt wird.Kopieren einer Abfrage von SQL Server zu MS Access
Ich muss diese Abfrage in Access ausführen, da es mehr Daten gibt, die ich in die Abfrage ziehen muss.
Allerdings, wenn ich die SQL in Access kopieren, funktioniert es nicht, ich bekomme einen Syntaxfehler, Fehlender Operator in Abfrageausdruck.
SELECT main.Tbl_ServiceOrder.ServiceOrder
, main.Tbl_Serviceorder.BusinessPartnerNumber
, main.Tbl_ServiceOrder.ExternalPointofDeliverynumber
, main.Tbl_ServiceOrder.ServiceProduct
, main.Tbl_ServiceOrder.SOCreatedOn
, main.Tbl_ServiceOrder.MainUserStatus
, main.Tbl_ServiceOrder.MainUserStatusDesc
, main.Tbl_ServiceOrder.ReasonCode
, main.Tbl_ServiceOrder.ReasonCodeDesc
, main.Tbl_ServiceOrder.SOActualFinishDate
, main.Tbl_ServiceOrder.BasicStartDate
,CAST(CASE WHEN reasoncode <> 'CMPL' THEN 'Pre Install'
WHEN reasoncode = 'CMPL' and SOActualFinishDate < (getdate()-182) THEN 'SMART BAU'
ELSE 'Post Install' END as Varchar) as SMRTPot
FROM main.Tbl_ServiceOrder
WHERE main.Tbl_ServiceOrder.ServiceProduct ='SMINSTALL'
OR main.Tbl_ServiceOrder.ServiceProduct ='SMEXCHANGE'
The WHEN
auf der ersten Zeile des CAST
wird durch Zugriff als Fehlerpunkt markiert.
Was mache ich falsch?
Ich habe versucht, unter
, IIF (reasoncode <> 'CMPL','Pre Install',(IIF SOActualFinishDate < (getdate()-182),'SMART BAU','Post Install')) as SMRTPot
über die Besetzung an den IIF Ändern gibt Syntaxfehler (Komma) in Abfrageausdruck
IIF (reasoncode <> 'CMPL','Pre Install',(IIF SOActualFinishDate < (getdate()-182),'SMART BAU','Post Install')) as SMRTPot
oben gibt Syntaxfehler in Abfrage-Ausdruck.
Okay, so ist es das, was ich bin jetzt mit:
SELECT main.Tbl_ServiceOrder.ServiceOrder
, main.Tbl_Serviceorder.BusinessPartnerNumber
, main.Tbl_ServiceOrder.ExternalPointofDeliverynumber
, main.Tbl_ServiceOrder.ServiceProduct
, main.Tbl_ServiceOrder.SOCreatedOn
, main.Tbl_ServiceOrder.MainUserStatus
, main.Tbl_ServiceOrder.MainUserStatusDesc
, main.Tbl_ServiceOrder.ReasonCode
, main.Tbl_ServiceOrder.ReasonCodeDesc
, main.Tbl_ServiceOrder.SOActualFinishDate
, main.Tbl_ServiceOrder.BasicStartDate
,Switch(reasoncode <> 'CMPL', 'Pre Install',
reasoncode = 'CMPL' AND SOActualFinishDate < (Getdate() - 182), 'SMART BAU',
True, 'Post Install') as SMRTPot
FROM main.Tbl_ServiceOrder
WHERE main.Tbl_ServiceOrder.ServiceProduct ='SMINSTALL' OR main.Tbl_ServiceOrder.ServiceProduct ='SMEXCHANGE'
Fehlermeldung jetzt Datei nicht gefunden ‚Dateipfad \ main.mdb
http://stackoverflow.com/questions/14920116/does-ms-access-support-case-when-clause-if-connect-with-odbc –
haben Sie die CASE-Syntax für Access nachgeschlagen und verglichen mit deine ? – GuidoG