31 - Group by (Agrupar registros)


La función count solo cuenta para todos los registros. Podemos generar valores de resumen para un solo campo, combinando la función count con la cláusula "group by", que agrupa registros para consultas detalladas.

Por ejemplo queremos saber la cantidad de artículos que hay por rubro, luego debemos implementar la siguiente algoritmo (pagina1.asp):

<%option explicit%>
<html>
<head>
<title>problema</title>
</head>
<body>
<%
dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _
  "Data Source=.;" & _
  "Integrated Security=SSPI;" & _
  "Persist Security Info=False;" & _
  "Initial Catalog=wi630629_aspya"
conexion.Open
dim registros
set registros = Server.CreateObject("ADODB.RecordSet") 
registros.open "select count(*) as cantidad,ru.descripcion as descrirubro " & _
  " from articulos as ar " & _
  "join rubros as ru on ru.codigo=ar.codigorubro " & _
  " group by ru.descripcion",conexion
do while not registros.eof
  response.write("Rubro:" & registros("descrirubro"))
  response.write("<br>")
  response.write("Cantidad de artículos de dicho rubro:" & 
  registros("cantidad"))
  response.write("<br>")
  response.write("------------------------------------------------------------")
  response.write("<br>")
  registros.movenext
loop
conexion.close
%>
</body>
</html> 

Como podemos ver la sintaxis SQL para agrupar por rubro es:

registros.open "select count(*) as cantidad,ru.descripcion as descrirubro " & _
  " from articulos as ar " & _
  "join rubros as ru on ru.codigo=ar.codigorubro " & _
  " group by ru.descripcion",conexion

La instrucción anterior solicita que recupere el nombre del rubro y cuente la cantidad de registros que coinciden por el campo "descripcion" de la tabla "rubros". Como resultado aparecen los nombres de los rubros y la cantidad de registros para dicho rubro.


Retornar