在SQLite中等效于ROW_NUMBER()OVER

时间:2018-08-06 14:15:39

标签: sql-server sqlite

我在SQL Server中有一个查询,需要更改为SQLite,但我不知道如何转换ROW_NUMBER()函数。

能帮我吗?

这是我在SQL Server中的查询

SELECT
    a.*, 
    k.cod_ativo, k.dsc_ativo, k.dsc_codigo_os, k.cod_servico,
    k.cod_instalacao, k.dsc_localizacao, k.dsc_complemento_localizacao, e.vlr_resposta_caracteristica
FROM 
    despacho_os a 
LEFT JOIN 
    (SELECT
         d.cod_ativo, d.dsc_ativo, c.dsc_codigo_os, c.cod_servico,
         d.cod_instalacao, d.dsc_localizacao, d.dsc_complemento_localizacao, 
         c.us_user, c.cod_empresa, c.sgl_sistema_origem,    
         c.num_sequencial_despacho,
         ROW_NUMBER() OVER (PARTITION BY c.NUM_SEQUENCIAL_DESPACHO, c.sgl_sistema_origem
                            ORDER BY c.NUM_SEQUENCIAL_DESPACHO) AS num
     FROM 
         ativo_os c     
     LEFT JOIN 
         ativo d ON c.cod_ativo = d.cod_ativo 
     GROUP BY 
         d.cod_ativo, d.dsc_ativo, c.dsc_codigo_os, c.cod_servico,
         d.cod_instalacao, d.dsc_localizacao, d.dsc_complemento_localizacao, 
         c.us_user, c.cod_empresa, c.sgl_sistema_origem, 
         c.num_sequencial_despacho) k ON a.us_user = k.us_user 
                                      AND a.cod_empresa = k.cod_empresa
                                      AND a.sgl_sistema_origem = k.sgl_sistema_origem 
                                      AND a.num_sequencial_despacho = k.num_sequencial_despacho
    LEFT JOIN 
        caracteristica_os e ON a.us_user = e.us_user
                            AND a.cod_empresa = e.cod_empresa
                            AND a.sgl_sistema_origem = e.sgl_sistema_origem
                            AND a.num_sequencial_despacho = e.num_sequencial_despacho
                            AND e.COD_CARACTERISTICA = 'NUM_OBRA' 
    WHERE
        a.cod_situacao NOT IN ({0},{1},{2})
        AND a.ind_situacao_os <> 4
        AND (k.num = 1 OR k.num IS NULL)

0 个答案:

没有答案