mysql - 将 MySQL 转换为 SQL Server

标签 mysql sql-server

我正在尝试运行以下查询(针对 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

参见SQL Fiddle with Demo

关于mysql - 将 MySQL 转换为 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702609/

相关文章:

mysql - 当 SQL 插件无法连接到数据库时,我可以让 Maven 打印出自定义错误消息吗?

sql-server - 格式文件中的注释

sql-server - 检查约束以仅允许两列的一种组合

php - 背靠背准备好的语句中的第二个准备好的语句存在问题

mysql - 在 View 的结果集中返回具有非聚合列的聚合列的最佳方法是什么

c# - 使用相同的 SQL 命令但不同的值从数据库获取行

php - 尝试将数字和字母插入表中时出现数据库错误,但只有数字有效

sql-server - 无需事务日志即可恢复 SQL Server 数据库

sql - 删除 SQL Server 中的临时表?

c# - 数据尚未插入数据库(使用 SqlDataSource)