转换 SQL 查询以在 MS Access SQL 中工作
Convert SQL query to work in MS Access SQL
我正在尝试将 SQL
查询转换为在 MS-Access
中工作,有什么建议的方法吗?谢谢
SELECT
colldet.college,
COUNT(DISTINCT manuscript.p_name) AS A,
COUNT(DISTINCT CASE WHEN s_p = 'منجز' THEN p_name END) AS B,
COUNT(DISTINCT CASE WHEN s_p = 'منجز منشور' THEN p_name END) AS C,
COUNT(DISTINCT CASE WHEN s_p = 'مخطط' THEN p_name END) AS D
FROM manuscript
RIGHT OUTER JOIN colldet
ON manuscript.coll_name = colldet.college
GROUP BY colldet.college
正如 June7 所指出的,Access 不支持 COUNT DISTINCT,因此您需要在计数之前先区分事物。同样,正如 June7 所建议的那样,使用 Iif() 而不是 CASE。这是一个猜测:
SELECT Q.College,
COUNT(Q.A1) AS A,
COUNT(Q.B1) AS B,
COUNT(Q.C1) AS C,
COUNT(Q.D1) AS D
FROM (SELECT DISTINCT colldet.college,
manuscript.p_name AS A1,
IIF(s_p = 'منجز',p_name,Null) AS B1,
IIF(s_p = 'منجز منشور',p_name,Null) AS C1,
IIF(s_p = 'مخطط',p_name,Null) AS D1
FROM manuscript
RIGHT OUTER JOIN colldet
ON manuscript.coll_name = colldet.college)
AS Q
GROUP BY Q.college
我正在尝试将 SQL
查询转换为在 MS-Access
中工作,有什么建议的方法吗?谢谢
SELECT
colldet.college,
COUNT(DISTINCT manuscript.p_name) AS A,
COUNT(DISTINCT CASE WHEN s_p = 'منجز' THEN p_name END) AS B,
COUNT(DISTINCT CASE WHEN s_p = 'منجز منشور' THEN p_name END) AS C,
COUNT(DISTINCT CASE WHEN s_p = 'مخطط' THEN p_name END) AS D
FROM manuscript
RIGHT OUTER JOIN colldet
ON manuscript.coll_name = colldet.college
GROUP BY colldet.college
正如 June7 所指出的,Access 不支持 COUNT DISTINCT,因此您需要在计数之前先区分事物。同样,正如 June7 所建议的那样,使用 Iif() 而不是 CASE。这是一个猜测:
SELECT Q.College,
COUNT(Q.A1) AS A,
COUNT(Q.B1) AS B,
COUNT(Q.C1) AS C,
COUNT(Q.D1) AS D
FROM (SELECT DISTINCT colldet.college,
manuscript.p_name AS A1,
IIF(s_p = 'منجز',p_name,Null) AS B1,
IIF(s_p = 'منجز منشور',p_name,Null) AS C1,
IIF(s_p = 'مخطط',p_name,Null) AS D1
FROM manuscript
RIGHT OUTER JOIN colldet
ON manuscript.coll_name = colldet.college)
AS Q
GROUP BY Q.college