none
Inciar o RowNum RRS feed

  • Pergunta

  •  

    Olá pessoal, estou com um problema que não estou conseguindo resolver.

     

    tenho um determinado retorno da minha select:

     

    Leilao        Fornecedor        Material         Valor                 Rownum

    5                 2                          2               10,0000             1
    5                 1                          2               11,3000             2
    5                 4                          2               13,5000             3
    5                 1                          4                4,0000              4
    5                 4                          4                4,6000              5
    5                 2                          4                5,1500              6

     

    estou precisando que fique:

     

    Leilao        Fornecedor        Material         Valor                Posicao do Fornecedor por material

    5                 2                          2               10,0000             1
    5                 1                          2               11,3000             2
    5                 4                          2               13,5000             3
    5                 1                          4                4,0000              1
    5                 4                          4                4,6000              2
    5                 2                          4                5,1500              3

     

    Briguei...briguei até ficar sem ideia, alguém tem alguma sugestao?

     

    Obrigado.

    domingo, 2 de novembro de 2008 15:50

Respostas

  • Boa Tarde Diego,

     

    Se for no 2005 está fácil fácil. Se for no 2000 é possível, mas não me atrevo a tentar sem ter certeza. Segue a solução 2005 based.

     

    Code Snippet

    CREATE TABLE tbl (Leilao TINYINT,Fornecedor TINYINT,Material TINYINT,Valor SMALLMONEY)

     

    INSERT INTO tbl VALUES (5,2,2,10.0000)

    INSERT INTO tbl VALUES (5,1,2,11.3000)

    INSERT INTO tbl VALUES (5,4,2,13.5000)

    INSERT INTO tbl VALUES (5,1,4,4.0000)

    INSERT INTO tbl VALUES (5,4,4,4.6000)

    INSERT INTO tbl VALUES (5,2,4,5.1500)

     

    SELECT *, ROW_NUMBER() OVER (ORDER BY Material, Valor) AS RowNum

    FROM tbl

     

    SELECT *, ROW_NUMBER() OVER (PARTITION BY Material ORDER BY Valor) AS RowNum

    FROM tbl

     

    [ ]s,

     

    Gustavo

    domingo, 2 de novembro de 2008 19:44

Todas as Respostas

  • Boa Tarde Diego,

     

    Se for no 2005 está fácil fácil. Se for no 2000 é possível, mas não me atrevo a tentar sem ter certeza. Segue a solução 2005 based.

     

    Code Snippet

    CREATE TABLE tbl (Leilao TINYINT,Fornecedor TINYINT,Material TINYINT,Valor SMALLMONEY)

     

    INSERT INTO tbl VALUES (5,2,2,10.0000)

    INSERT INTO tbl VALUES (5,1,2,11.3000)

    INSERT INTO tbl VALUES (5,4,2,13.5000)

    INSERT INTO tbl VALUES (5,1,4,4.0000)

    INSERT INTO tbl VALUES (5,4,4,4.6000)

    INSERT INTO tbl VALUES (5,2,4,5.1500)

     

    SELECT *, ROW_NUMBER() OVER (ORDER BY Material, Valor) AS RowNum

    FROM tbl

     

    SELECT *, ROW_NUMBER() OVER (PARTITION BY Material ORDER BY Valor) AS RowNum

    FROM tbl

     

    [ ]s,

     

    Gustavo

    domingo, 2 de novembro de 2008 19:44
  • Gustavo, mesmo no 2000 ainda é possível,

    Não fica bonito, :-( , mas da pra fazer...


    SELECT *,1 + CASE WHEN (SELECT COUNT(*)
                                                  FROM #TBL T
                                                WHERE T.MATERIAL = #TBL.MATERIAL
                                                      AND T.VALOR < #TBL.VALOR) > 0 THEN (SELECT COUNT(*)
                                                                                                                        FROM #TBL T
                                                                                                                     WHERE T.MATERIAL = #TBL.MATERIAL
                                                                                                                          AND T.VALOR < #TBL.VALOR)
             ELSE 0
             END AS ROWNUM
    FROM #TBL
    segunda-feira, 3 de novembro de 2008 10:19
  • Oi Fabiano,

     

    Eu sabia que dava pra fazer no 2000 (até coloquei no post). A questão é que eu só postaria um código semelhante se fosse realmente para 2000. Como era para 2005 coloquei a solução mais fácil.

     

    [ ]s,

     

    Gustavo

    segunda-feira, 3 de novembro de 2008 12:15