2013-03-26 39 views
2

嗨我想将一些访问SQL查询转换为MySQL查询,并让它一个凹凸,因为我不确定如何转换这些代码。有人请帮忙。转换访问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数据库中标记相同我只需要在覆盖这两个让我有同样的结果。

回答

2

访问逃逸关键字使用[],但使用的MySQL``,MySQL的可以使用CASE替换I如果。

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;