我正在尝试运行以下查询(针对 Foodmart 2000),它在 MySQL 上运行良好。在 SQL Server 2005 上,我得到的只是一条“Syntax error close '”消息。
SELECT * FROM ((SELECT COUNT(state_province) AS 'WA'
FROM customer c1
WHERE c1.state_province LIKE 'WA'
GROUP BY c1.state_province) as t1,
(SELECT COUNT(state_province) AS 'OR'
FROM customer c1
WHERE c1.state_province LIKE 'OR'
GROUP BY c1.state_province) as t2,
(SELECT COUNT(state_province) AS 'CA'
FROM customer c1
WHERE c1.state_province LIKE 'CA'
GROUP BY c1.state_province) as t3);
到底是什么导致了这个问题?
最佳答案
您缺少别名:
SELECT *
FROM
(
select *
from
(SELECT COUNT(state_province) AS 'WA'
FROM customer c1
WHERE c1.state_province LIKE 'WA'
GROUP BY c1.state_province) as t1,
(SELECT COUNT(state_province) AS 'OR'
FROM customer c1
WHERE c1.state_province LIKE 'OR'
GROUP BY c1.state_province) as t2,
(SELECT COUNT(state_province) AS 'CA'
FROM customer c1
WHERE c1.state_province LIKE 'CA'
GROUP BY c1.state_province) as t3
) src; -- < add this alias
您必须在所有派生表和子查询上都有别名。
您还可以通过使用以下命令来使用 @Kaf 的 still 版本和 count
:
SELECT count(CASE WHEN state_province LIKE 'WA' THEN 1 ELSE null END) AS 'WA',
count(CASE WHEN state_province LIKE 'OR' THEN 1 ELSE null END) AS 'OR',
count(CASE WHEN state_province LIKE 'CA' THEN 1 ELSE null END) AS 'CA'
FROM customer
关于mysql - 将 MySQL 转换为 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702609/