[英]convert MySQL SQL to work in MS-Access Database
尝试从MySql数据库转换此工作SQL以在MS Access数据库上工作:
SELECT u.LastName AS LAST, u.FirstName AS FIRST,
MAX(IF(`e.ClassName`='MDC (Intro)', DateCompleted, NULL)) AS 'MDC',
MAX(IF(`e.ClassName`='800 MHz Radio (Intro)', DateCompleted, NULL)) AS 'RADIO',
MAX(IF(`e.ClassName`='ePCR (Intro)', DateCompleted, NULL)) AS 'ePCR',
MAX(IF(`e.ClassName`='Firehouse (Incident)', DateCompleted, NULL)) AS 'Firehouse'
FROM EnrollmentsTbl e INNER JOIN UsersDataTbl u ON e.UserName = u.UserName
GROUP BY e.UserName
WHERE u.LastName LIKE 'Bar%'
ORDER BY u.LastName
一些语法需要转换:
GROUP BY
必须包括所有非聚合列。 因此,将FirstName
和LastName
添加到分组中。 IF
用于条件表达式,而IIF()
用作条件表达式。 %
通配符用于LIKE
评估,但是默认情况下,通过GUI .exe程序的访问使用*
。 但是其ALIKE
运算符在两种设置类型中均有效。 考虑以下SQL调整:
SELECT u.LastName AS `LAST`, u.FirstName AS `FIRST`,
MAX(IIF(e.`ClassName`='MDC (Intro)', DateCompleted, NULL)) AS `MDC`,
MAX(IIF(e.`ClassName`='800 MHz Radio (Intro)', DateCompleted, NULL)) AS `RADIO`,
MAX(IIF(e.`ClassName`='ePCR (Intro)', DateCompleted, NULL)) AS `ePCR`,
MAX(IIF(e.`ClassName`='Firehouse (Incident)', DateCompleted, NULL)) AS `Firehouse`
FROM EnrollmentsTbl e
INNER JOIN UsersDataTbl u ON e.UserName = u.UserName
GROUP BY u.LastName, u.FirstName, e.UserName
WHERE u.LastName ALIKE 'Bar%'
ORDER BY u.LastName
我不确定它是否完全符合我的要求(在第一列中需要第一/最后一个,并且GROUP BY
是主要问题,但这将返回Access的结果:
SELECT u.LastName AS [LAST],
Max(IIf([e.ClassName]='MDC (Intro)',Format([DateCompleted],'mm/dd/yyyy'),Null)) AS [MDC],
Max(IIf([e.ClassName]='800 MHz Radio (Intro)',Format([DateCompleted],'mm/dd/yyyy'),Null)) AS [RADIO],
Max(IIf([e.ClassName]='ePCR (Intro)',Format([DateCompleted],'mm/dd/yyyy'),Null)) AS [ePCR],
Max(IIf([e.ClassName]='Firehouse (Incident)',Format([DateCompleted],'mm/dd/yyyy'),Null)) AS [Firehouse]
FROM EnrollmentsTbl e
INNER JOIN UsersDataTbl u ON e.UserName = u.UserName
GROUP BY u.LastName, u.FirstName, e.UserName
WHERE u.UserName LIKE 'bar%'
ORDER BY u.LastName;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.