pesquisa sql server complicada

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
 
Código:
 select count(*)
     from TabProcesso
       where(
gostava de saber onde tenho de fechar o meu primeiro where:
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.
 
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
 
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:
SELECT COUNT(*)
FROM
( SELECT TOP 2 *
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
ORDER BY p.DataDecisao asc) as A
 
Última edição pelo moderador:
Back
Topo