您好我正在尝试将一些Access SQL查询转换为MySQL查询并让它发生冲突,因为我不确定如何转换这些代码。请帮忙。
1
SELECT Notices.Promoter,
Sum(IIf([Notices].[Notice Type]='GRANT PERMIT' Or [Notices].[Notice Type]='GRANT VARIATION' Or [Notices].[Notice Type]='GRANT PAA',1,0)) AS Granted,
Sum(IIf([Notices].[Notice Type]='REFUSE APPLICATION',1,0)) AS Refused,
Sum(IIf([Notices].[Permit Status]='Deemed',1,0)) AS Deemed
FROM Notices
GROUP BY Notices.Promoter;
2
SELECT [Notices].Promoter,
Sum(IIf([Notices].[Notice Type]='VARIATION',1,0)) AS Variation,
Sum(IIf([Notices].[Notice Type]='TWO HOURS AFTER',1,0)) AS [Two Hours After],
Sum(IIf([Notices].[Notice Type]='THREE MONTHS',1,0)) AS [Three Months],
Sum(IIf([Notices].[Notice Type]='THREE DAY',1,0)) AS [Three Day],
Sum(IIf([Notices].[Notice Type]='TEN DAY',1,0)) AS [Ten Day]
FROM Notices
GROUP BY [Notices].Promoter;
Access数据库和MySQL数据库标记相同,我只需要覆盖这两个,以便我得到相同的结果。
答案 0 :(得分:2)
访问escape关键字使用[],但mysql使用``,mysql可以使用CASE替换IIf。
SELECT `Notices`.Promoter,
Sum(CASE WHEN `Notices`.`Notice Type`=`VARIATION` THEN 1 ELSE 0 END) AS Variation,
Sum(CASE WHEN `Notices`.`Notice Type`='TWO HOURS AFTER' THEN 1 ELSE 0 END) AS `Two Hours After`,
Sum(CASE WHEN `Notices`.`Notice Type`='THREE MONTHS' THEN 1 ELSE 0 END) AS `Three Months`,
Sum(CASE WHEN `Notices`.`Notice Type`='THREE DAY' THEN 1 ELSE 0 END) AS `Three Day`,
Sum(CASE WHEN `Notices`.`Notice Type`='TEN DAY' THEN 1 ELSE 0 END) AS `Ten Day`
FROM Notices
GROUP BY `Notices`.Promoter;