none
contar datos con el mismo ID RRS feed

  • Pregunta

  • buenas

    estoy haciendo una consulta  de 1000 identificadores de personas,  estas personas pueden tener  uno o mas vehículos  o no tener  vehículos, hay identificados  que si los consulto en su tabla  de vehículos aparecen que pagan  dos impuestos,  lo se porque una fila tiene una matricula  y la otra fila  tiene otra matricula,

    yo quiero hacer una consulta que  me cuente  si tiene dos filas  que me muestre dos,   el inner que yo tengo  es este pero no tengo el conteo

    /****** Script for SelectTopNRows command from SSMS  ******/
    SELECT A.ididentificador
    ,A.NOMBRE
    ,A.identificadorpersonal
      FROM tabla1 as A
      INNER JOIN vehiculos as b ON A.ididentificador = B.ididentificador
      WHERE A.identificadorpersona IN (1001475901402,
    1217272481417,
    1272528121606,
    1399855011410,
    1441138971606,
    1504135131405,
    1551404050806
    )

    este 121727281417  por ejemplo   tiene dos vehiculos  quiciera sacar algo asi

    identificador                   nombre          identificadorpersonal     cantidad 

    23                                  juan                121727281417                   2

    y esa cantidad   es la que no se como sacarla  

    jueves, 16 de abril de 2020 0:20

Respuestas

  • Hola Ronal Monroy:

    CREATE TABLE dbo.tabla1 (ididentificador bigint, nombre varchar(50), identificadorpersonal bigint)
    CREATE TABLE dbo.vehiculos (ididentificador bigint, matrícula varchar(10))
    GO
    INSERT INTO dbo.tabla1 (ididentificador, nombre, identificadorpersonal)
    VALUES
    (23,'juan',1217272481417),
    (24,'ana' ,1001475901402),
    (25,'eli' ,1399855011410),
    (26,'isa' ,1504135131405);
    INSERT INTO dbo.vehiculos (ididentificador, matrícula)
    VALUES
    (23,'0000'),
    (23,'0001'),
    (24,'0002'),
    (25,'0003');
    GO

    Para contar registros, disponemos de la función de agregación

    count

    https://docs.microsoft.com/es-es/sql/t-sql/functions/count-transact-sql?view=sql-server-ver15

    SELECT A.ididentificador
    	,A.NOMBRE
    	,A.identificadorpersonal
    	, count(b.ididentificador) as cantidad
      FROM tabla1 as A
    	INNER JOIN vehiculos as b ON A.ididentificador = B.ididentificador
      WHERE A.identificadorpersonal IN 
    	( 1001475901402,
    	  1217272481417,
    	  1272528121606,
    	  1399855011410,
    	  1441138971606,
    	  1504135131405,
    	  1551404050806
    	)
    GROUP BY A.ididentificador
    		,A.NOMBRE
    		,A.identificadorpersonal;

    Salida

    Ahora bien, si te das cuenta, el usuario 26 no tiene vehículos, y el registro no sale. Si queremos que salga, solo tenemos que modificar el INNER JOIN, por un LEFT JOIN

    SELECT A.ididentificador
    	,A.NOMBRE
    	,A.identificadorpersonal
    	, count(b.ididentificador) as cantidad
      FROM tabla1 as A
    	LEFT JOIN vehiculos as b ON A.ididentificador = B.ididentificador
      WHERE A.identificadorpersonal IN 
    	( 1001475901402,
    	  1217272481417,
    	  1272528121606,
    	  1399855011410,
    	  1441138971606,
    	  1504135131405,
    	  1551404050806
    	)
    GROUP BY A.ididentificador
    		,A.NOMBRE
    		,A.identificadorpersonal;

    Salida

    group by 

    https://javifer2.wordpress.com/2019/10/04/group-by-quizas-la-clausula-mas-conflictiva/

    jueves, 16 de abril de 2020 4:11

Todas las respuestas

  • Hola Ronal Monroy

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, vamos a darte seguimiento e investigaremos para buscar la mejor respuesta para ti.

     

    Gracias por usar los foros de MSDN.

     

    Luis Diego Mora

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 16 de abril de 2020 1:08
    Moderador
  • Hola Ronal Monroy:

    CREATE TABLE dbo.tabla1 (ididentificador bigint, nombre varchar(50), identificadorpersonal bigint)
    CREATE TABLE dbo.vehiculos (ididentificador bigint, matrícula varchar(10))
    GO
    INSERT INTO dbo.tabla1 (ididentificador, nombre, identificadorpersonal)
    VALUES
    (23,'juan',1217272481417),
    (24,'ana' ,1001475901402),
    (25,'eli' ,1399855011410),
    (26,'isa' ,1504135131405);
    INSERT INTO dbo.vehiculos (ididentificador, matrícula)
    VALUES
    (23,'0000'),
    (23,'0001'),
    (24,'0002'),
    (25,'0003');
    GO

    Para contar registros, disponemos de la función de agregación

    count

    https://docs.microsoft.com/es-es/sql/t-sql/functions/count-transact-sql?view=sql-server-ver15

    SELECT A.ididentificador
    	,A.NOMBRE
    	,A.identificadorpersonal
    	, count(b.ididentificador) as cantidad
      FROM tabla1 as A
    	INNER JOIN vehiculos as b ON A.ididentificador = B.ididentificador
      WHERE A.identificadorpersonal IN 
    	( 1001475901402,
    	  1217272481417,
    	  1272528121606,
    	  1399855011410,
    	  1441138971606,
    	  1504135131405,
    	  1551404050806
    	)
    GROUP BY A.ididentificador
    		,A.NOMBRE
    		,A.identificadorpersonal;

    Salida

    Ahora bien, si te das cuenta, el usuario 26 no tiene vehículos, y el registro no sale. Si queremos que salga, solo tenemos que modificar el INNER JOIN, por un LEFT JOIN

    SELECT A.ididentificador
    	,A.NOMBRE
    	,A.identificadorpersonal
    	, count(b.ididentificador) as cantidad
      FROM tabla1 as A
    	LEFT JOIN vehiculos as b ON A.ididentificador = B.ididentificador
      WHERE A.identificadorpersonal IN 
    	( 1001475901402,
    	  1217272481417,
    	  1272528121606,
    	  1399855011410,
    	  1441138971606,
    	  1504135131405,
    	  1551404050806
    	)
    GROUP BY A.ididentificador
    		,A.NOMBRE
    		,A.identificadorpersonal;

    Salida

    group by 

    https://javifer2.wordpress.com/2019/10/04/group-by-quizas-la-clausula-mas-conflictiva/

    jueves, 16 de abril de 2020 4:11