Array
(
)

contador de campo

Carlos_tedex
   - 29 jul 2009

Minha duvida é a seguinte:

Estou tendando fazer uma query que me retorne a qtde de campos que o mesmo nao se repita. Ex:

#Código

select ENT_CODIGO, FIS_CODIGO
from ENTITENS
where ENT_CODIGO = 262
group by ENT_CODIGO, FIS_CODIGO


Resultado desta query:
#Código
ENT_CODIGO  FIS_CODIGO
----------- ----------
262         1.403
262         2.102
262         2.102
262         2.102
262         2.102

(5 row(s) affected)


Gostaria que minha query retornasse a qtde de FIS_CODIGO diferente. Ficando assim:

#Código
ENT_CODIGO  FIS_CODIGO QTDE
----------- ---------- ----
262         1.403      2
262         2.102      2
262         2.102      2
262         2.102      2
262         2.102      2

(5 row(s) affected)


Ou seja a qtde de FIS_CODIGO que o registro possui que o mesmo nao se repita.

Gustavobretas
   - 29 jul 2009

E aí Carlos, tranquilo!?

cara, pelo que eu entendi, se vc colocar um COUNT(FIS_CODIGO) ja é pra resolver!

#Código

select ENT_CODIGO, 
FIS_CODIGO,
COUNT(FIS_CODIGO) AS QTDE
from ENTITENS
where ENT_CODIGO = 262
group by ENT_CODIGO, FIS_CODIGO 


flw...

Carlos_tedex
   - 29 jul 2009


Citação:
E aí Carlos, tranquilo!?

cara, pelo que eu entendi, se vc colocar um COUNT(FIS_CODIGO) ja é pra resolver!


Caro Gustavo, eu tb ja tinha feito com o count mas o resultado nao foi o que eu almejava. veja:

#Código

ENT_CODIGO  FIS_CODIGO QTDE        
----------- ---------- ----------- 
262         1.403      1
262         2.102      4

(2 row(s) affected)


Gostaria que ficasse assim:
#Código
ENT_CODIGO  FIS_CODIGO QTDE        
----------- ---------- ----------- 
262         1.403      2
262         2.102      2

(2 row(s) affected)


valew pela dica... qq novidade posta ai que nois testa aqui...

Emerson
   - 29 jul 2009

pode ser:
#Código

select
  EI1.ENT_CODIGO,
  EI1.FIS_CODIGO,
  (select count(distinct EI2.FIS_CODIGO)
   from ENTITENS EI2
   where EI2.ENT_CODIGO = EI1.ENT_CODIGO) AS QTDE
from
  ENTITENS EI1
where
  EI1.ENT_CODIGO = 262
group by
  EI1.ENT_CODIGO, EI1.FIS_CODIGO


ou, se você não precisar exibir o campo FIS_CODIGO:
#Código
select
  ENT_CODIGO,
  count(distinct FIS_CODIGO) AS QTDE
from
  ENTITENS 
where
  ENT_CODIGO = 262
group by
  EI1.ENT_CODIGO


Gustavobretas
   - 29 jul 2009

vc quer que a coluna QTDE seja a qtde de FIS_CODIGO diferentes para o ENT_CODIGO então!?

ve se é isso mesmo!

#Código

SELECT E1.ENT_CODIGO, 
E1.FIS_CODIGO,
(SELECT COUNT(DISTINCT(FIS_CODIGO)) FROM ENTITENS E2 WHERE E2.ENT_CODIGO = E1.ENT_CODIGO) AS QTDE
FROM ENTITENS E1
WHERE E1.ENT_CODIGO = 262
GROUP BY E1.ENT_CODIGO, E1.FIS_CODIGO 


flw...

Gustavobretas
   - 29 jul 2009

aí, o emerson.en ja tinha postado! ñ tinha visto!

vlw!

Carlos_tedex
   - 30 jul 2009


Citação:
pode ser:...


Caro emerson.en é isso mesmo que eu estava precisando... valew mesmo ajudou muito...

OBS: Tb agradeço ao gustavobretas.