none
Particionando uma consulta RRS feed

  • Pergunta

  • Fala galera!

    Estou tentando usar esse tipo de particionamento em minha consulta

    select * from dim_cso where mod(cso_key,6)=0
    select * from dim_cso where mod(cso_key,6)=1
    select * from dim_cso where mod(cso_key,6)=2
    select * from dim_cso where mod(cso_key,6)=3
    select * from dim_cso where mod(cso_key,6)=4
    select * from dim_cso where mod(cso_key,6)=5

    mas o comando MOD não funciona no SQL!

    Alguem tem alguma ideia de ou sugestão?

    Muito Obrigado


    MCP Windows Server 2003

    quarta-feira, 4 de abril de 2012 14:37

Respostas

  • Bom dia Vinicius,

    Não sei se é o que você esta esperando mais veja se o comando % te ajuda.

    exe:

    select * from dim_cso where (cso_key % 6)=0;
    select * from dim_cso where (cso_key % 6)=1;
    select * from dim_cso where (cso_key % 6)=2;
    select * from dim_cso where (cso_key % 6)=3;

    Abçs,

    Adriano Nascimento

    quarta-feira, 4 de abril de 2012 14:51

Todas as Respostas

  • Olá Vinícius,

    Você esta querendo obter o "resto" da divisão? Se for isto o comando certo é o "%"(porcentagem).

    Veja um exemplo:

    create table NULL_TESTE(
    	CODIGO INT NULL
    )
    GO
    DECLARE @VAR INT
    SET @VAR = 1
    
    WHILE @VAR < 50 BEGIN
    	IF (@VAR % 2) = 1
    		INSERT INTO NULL_TESTE (CODIGO) VALUES (@VAR)
    	
    	IF (@VAR % 2) = 0
    		INSERT INTO NULL_TESTE (CODIGO) VALUES (NULL)
    SET @VAR = @VAR +1
    END	
    
    SELECT ISNULL(CODIGO,99999) FROM NULL_TESTE

    Depende do que você precisa. Por exemplo, Você poderia usar a função RANK e a partir do número sequencial gerado por ela criar uma sub-query correlacionada e usar o between para exibir apenas um range definido de informações.

    Se útil, Classifique.

    Abraços.


    Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com

    quarta-feira, 4 de abril de 2012 14:48
  • Bom dia Vinicius,

    Não sei se é o que você esta esperando mais veja se o comando % te ajuda.

    exe:

    select * from dim_cso where (cso_key % 6)=0;
    select * from dim_cso where (cso_key % 6)=1;
    select * from dim_cso where (cso_key % 6)=2;
    select * from dim_cso where (cso_key % 6)=3;

    Abçs,

    Adriano Nascimento

    quarta-feira, 4 de abril de 2012 14:51
  • Simples e objetivo!

    Muito Obrigado Adriano!


    MCP Windows Server 2003

    quarta-feira, 4 de abril de 2012 16:13