1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

pesquisa sql server complicada

Discussão em 'Programação' iniciada por alfinete, 2 de Janeiro de 2008. (Respostas: 6; Visualizações: 1002)

  1. alfinete

    alfinete Power Member

    tenho este select que boma que é uma maravilha

    Código:
     SELECT NumeroProcesso,SiglaTP,SiglaTT,SiglaA,DataDecisao,Documento
             FROM
             (SELECT  ROW_NUMBER() OVER (ORDER BY p.DataDecisao asc) 
              AS Row, p.NumeroProcesso,tp.Sigla as SiglaTP,tt.Sigla as SiglaTT,
              a.Sigla as SiglaA,p.DataDecisao,p.Documento FROM dbo.TabProcesso p
    
              JOIN dbo.TabTipoProcesso tp ON tp.IdTipoProcesso = p.TipoProcesso
              JOIN dbo.TabTribunal tt ON tt.IdTribunal = p.Tribunal
              JOIN dbo.TabAssunto a ON a.IdAssunto = p.Assunto      
             )
             AS LogWithRowNumbers WHERE Row >= 1 AND Row <= 2
    
    para para alem deste quero contar tdos os regs deste pesquiza fazendo um count(*), o que eu penso que tenho de acrescentar é:

    Código:
     select count(*)
         from TabProcesso
           where(
    
    gostava de saber onde tenho de fechar o meu primeiro where:

    que ja experiemntei tdas as hipoteses julgo eu , e não estou a csg


    agradecia imenso

    ficando

    Código:
     select count(*)
         from TabProcesso
           where(
    
       SELECT NumeroProcesso,SiglaTP,SiglaTT,SiglaA,DataDecisao,Documento
             FROM
             (SELECT  ROW_NUMBER() OVER (ORDER BY p.DataDecisao asc) 
              AS Row, p.NumeroProcesso,tp.Sigla as SiglaTP,tt.Sigla as SiglaTT,
              a.Sigla as SiglaA,p.DataDecisao,p.Documento FROM dbo.TabProcesso p
    
              JOIN dbo.TabTipoProcesso tp ON tp.IdTipoProcesso = p.TipoProcesso
              JOIN dbo.TabTribunal tt ON tt.IdTribunal = p.Tribunal
              JOIN dbo.TabAssunto a ON a.IdAssunto = p.Assunto      
             )
             AS LogWithRowNumbers WHERE Row >= 1 AND Row <= 2
    
    
    
     
  2. r3pek

    r3pek Power Member

    Código:
     select count(*)
     from (
    
       SELECT NumeroProcesso,SiglaTP,SiglaTT,SiglaA,DataDecisao,Documento
             FROM
             (SELECT  ROW_NUMBER() OVER (ORDER BY p.DataDecisao asc) 
              AS Row, p.NumeroProcesso,tp.Sigla as SiglaTP,tt.Sigla as SiglaTT,
              a.Sigla as SiglaA,p.DataDecisao,p.Documento FROM dbo.TabProcesso p
    
              JOIN dbo.TabTipoProcesso tp ON tp.IdTipoProcesso = p.TipoProcesso
              JOIN dbo.TabTribunal tt ON tt.IdTribunal = p.Tribunal
              JOIN dbo.TabAssunto a ON a.IdAssunto = p.Assunto      
             ) AS LogWithRowNumbers WHERE Row >= 1 AND Row <= 2
     )
    
    
    

    assim deve dar.... mas se usares views é mais facil.
     
  3. alfinete

    alfinete Power Member

    obrigado na mesma

    mas assim não dá , pois da sintaxe near no ultimo parentises
     
  4. r3pek

    r3pek Power Member

    e acrescentando um "as qqcoisa" dp do parentises?
     
  5. alfinete

    alfinete Power Member

    mesmo assim n dá
     
  6. E se for assim:


    SELECT Count(*)
    FROM
    (SELECT ROW_NUMBER() OVER (ORDER BY p.DataDecisao asc)
    AS Row, p.NumeroProcesso,tp.Sigla as SiglaTP,tt.Sigla as SiglaTT,
    a.Sigla as SiglaA,p.DataDecisao,p.Documento FROM dbo.TabProcesso p

    JOIN dbo.TabTipoProcesso tp ON tp.IdTipoProcesso = p.TipoProcesso
    JOIN dbo.TabTribunal tt ON tt.IdTribunal = p.Tribunal
    JOIN dbo.TabAssunto a ON a.IdAssunto = p.Assunto
    ) AS LogWithRowNumbers WHERE Row >= 1 AND Row <= 2
     
  7. kzip

    kzip Power Member

    Não conheço essa função row_number(), mas a sintaxe deveria ser:
    Código:
    SELECT COUNT(*)
    FROM
        (
        SELECT NumeroProcesso,SiglaTP,SiglaTT,SiglaA,DataDecisao,Documento
            FROM
                 (SELECT  ROW_NUMBER() OVER (ORDER BY p.DataDecisao asc) 
                  AS Row, p.NumeroProcesso,tp.Sigla as SiglaTP,tt.Sigla as SiglaTT,
            a.Sigla as SiglaA,p.DataDecisao,p.Documento FROM dbo.TabProcesso p
                  JOIN dbo.TabTipoProcesso tp ON tp.IdTipoProcesso = p.TipoProcesso
            JOIN dbo.TabTribunal tt ON tt.IdTribunal = p.Tribunal
            JOIN dbo.TabAssunto a ON a.IdAssunto = p.Assunto      
            ) AS LogWithRowNumbers
             WHERE Row >= 1 AND Row <= 2
        ) as Qualquercoisa
    No entanto, parece-me uma query muito confusa. Acho que deve ser equivalente a:
     
    Última edição pelo moderador: 7 de Janeiro de 2008

Partilhar esta Página