[英]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.