mysql - 将 MySQL 脚本移植到 MS SQL -> 同时进行数据分配和检索

标签 mysql sql sql-server migration

我已经尝试了几个小时来完成这项工作,但我真的找不到办法。我有一个 MySQL 脚本,需要迁移到 MS SQL 2014,但是,我似乎无法使其工作。据我了解,最大的问题是 MySQL 允许这种指令:

SELECT @row_number = @row_number + 1, hora_int FROM table1;

您可以在检索数据的同时赋值,但 MS SQL 不会。

我有一个相对较大的脚本存在这个问题:

SELECT GLOBAL.year, GLOBAL.month, '1111111' as metric_id, GLOBAL.margin as metric_value FROM (SELECT A.year,
         A.month,
         CASE
           WHEN A.month = 1 THEN (@csum_fdo := A.imp)
           ELSE (@csum_fdo := @csum_fdo + A.imp) END as margin
  FROM (SELECT Act.year, Act.month, Act.imp - Pas.imp as imp
        FROM (SELECT year(tie.date) as year, month(tie.date) as month, sum(importe) as imp
              FROM accounting con,
                   dim_time tie,
                   dim_account cta
              WHERE con.account_date = tie.date
                AND con.account = cta.nivel_10
                AND cta.level_id = '2'
                AND con.subtype_id <> 'O'
              GROUP BY year(tie.date),
                       month(tie.date)) Act,
             (SELECT year(tie.date) as year, month(tie.date) as month, sum(importe) * -1 as imp
              FROM accounting con,
                   dim_time tie,
                   dim_account cta
              WHERE con.account_date = tie.date
                AND con.account = cta.nivel_10
                AND cta.level_id = '3'
                AND con.subtype_id <> 'O'
              GROUP BY year(tie.date),
                       month(tie.date)) Pas
        WHERE Act.year = Pas.year
          AND Act.month = Pas.month) A,
       (SELECT @csum_fdo := 0) E) GLOBAL

任何人都可以指出我必须做什么才能在 MS SQL 中重新创建代码吗?先谢谢大家了

最佳答案

在 SQL Server 和 (MyQL 8+) 中,您使用窗口函数。相当于:

SELECT @row_number = @row_number + 1, hora_int
FROM table1
ORDER BY col;

是:

SELECT ROW_NUMBER() OVER (ORDER BY col), hora_int
FROM table1;

如果您提供示例数据和期望的结果,就更容易找出您真正需要的功能。

关于mysql - 将 MySQL 脚本移植到 MS SQL -> 同时进行数据分配和检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53833131/

相关文章:

java - 使用 MySql 在 Java 中实现谷歌云消息传递

sql-server - SQL Server 唯一 GUID

php - 向 MYSQL 添加变量

javascript - 如何在 javascript/jquery 中解析日期时间?

mysql - 递归计算帖子的评论数

mysql - 获取重复字段,这些字段在mysql数据库中可能有空格

c# - 将查询结果显示为以逗号分隔的文字

mysql - SQL 如何在为另一个表生成输出后列出 NULL 值

mysql - 根据列的总和计算加类时间

mysql - SQL查询忽略条件