tag:blogger.com,1999:blog-8153574442463741229.post5278838742756689669..comments2024-03-18T20:58:53.090+01:00Comments on Aprendiendo SQL Server: ROW_NUMBER, o cómo obtener la enésima fila de un conjunto de resultadoslafarguehttp://www.blogger.com/profile/14455232775259438470noreply@blogger.comBlogger37125tag:blogger.com,1999:blog-8153574442463741229.post-60779850772979840002017-09-19T23:14:55.213+02:002017-09-19T23:14:55.213+02:00Ok, muchas gracias por tu tiempo.... Lo probaré . ...Ok, muchas gracias por tu tiempo.... Lo probaré . Gracias 👍JorgeH.https://www.blogger.com/profile/10620657741527598270noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-79663064082238370822017-02-04T18:09:42.635+01:002017-02-04T18:09:42.635+01:00Buenos días, yo tengo otra situación:
Tengo una t...Buenos días, yo tengo otra situación:<br /><br />Tengo una tabla atenciones, en ella tengo el dato del NroDocumento del medico y una fecha de atención y hago un row_number() para contar la cantidad de atenciones que tiene un medico por día, el tema esta en que necesito que esta numeración tenga un tope de 25 registros y que cuando llegue a ese numero reinicie la numeración, además, cada 25 registros tengo que agruparlos a un numero de pagina, para esto hago un dense_rak() con los mismos parametros que tiene el row_number(), también tengo un tope en para las paginas que son 20 y debe reiniciarse igual que los Reg. es algo así:<br /><br />Pag Reg NroDoc FechaAtencion<br />---- ---- ------- ----------<br />1 1 7445566 2016-11-04<br />1 2 7445566 2016-11-04<br />1 3 7445566 2016-11-04<br />.<br />.<br />.<br />1 24 7445566 2016-11-04<br />1 25 7445566 2016-11-04<br />2 1 7445566 2016-11-04<br />2 2 7445566 2016-11-04<br />2 3 7445566 2016-11-04<br />.<br />.<br />.<br />2 24 7445566 2016-11-04<br />2 25 7445566 2016-11-04<br /><br />Ahora ando liado con eso, seria una gran ayuda si me das una salida para ello. SaludosAnonymoushttps://www.blogger.com/profile/17114514224545984988noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-70937360729077385872016-12-21T06:33:36.923+01:002016-12-21T06:33:36.923+01:00Hola Jorge:
La verdad es que esas situaciones son...Hola Jorge:<br /><br />La verdad es que esas situaciones son poco deseables. En muchas ocasiones se suelen poner ceros de relleno de lante del número, así 01, 02... van delante de 11, 12...<br /><br />Personalmente no me acaba de convencer esa solución, porque te puede fallar después alguna comparación que hagas entre 01 y 1, por ejemplo.<br /><br />La alternativa que se me ocurre es separar la consulta en dos y unir los resultados mediante UNIÓN ALL.<br /><br />En la primera obtendrías los códigos numéricos y en la segunda los alfanuméricos, haciendo uso de la función ISNUMERIC.<br />https://msdn.microsoft.com/es-es/library/ms186272.aspx<br /><br />SELECT *, CAST(CodigProdu AS int) AS CodigoNumerico<br />FROM Productos<br />WHERE ISNUMERIC(CodigProdu) = 1<br />ORDER BY CodigoNumerico<br /><br />Union ALL<br /><br />SELECT *<br />FROM Productos<br />WHERE ISNUMERIC(CodigProd) <> 1<br />ORDER BY CodigProd<br /><br />Habría que comprobar el rendimiento de la consulta.<br /><br />Saludoslafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-60240886226566889162016-12-21T01:04:51.382+01:002016-12-21T01:04:51.382+01:00Buenas a todos, Tengo la siguiente situación:
En ...Buenas a todos, Tengo la siguiente situación: <br />En mi base de datos hay una tabla llamada Productos, la cual tiene los campos: CodigProdu(nvarchar), Nombre(nvarchar), etc.<br /><br />En ocasiones El Codigo del producto(CodigProdu) se guardará alfanumérico, pero en otras se guardará como numérico.<br /><br />El problema surge cuando llamo a los datos de la tabla y le digo que los ordene por el Código del Producto. Necesito que me muestre los códigos en orden numérico, pero los ordena mal. Por ej: 1,11,12,2,22,3, y así por el estilo.<br /><br />¿Como podría hacer para que mi consulta muestre los datos ordenados numéricamente por el Código de Producto, sin cambiar el tipo de datos Nvarchar?. Muchas Gracias Anonymoushttps://www.blogger.com/profile/17638120681426223303noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-73347216066433367872016-11-29T21:24:04.698+01:002016-11-29T21:24:04.698+01:00Excelente! he optimizado una consulta gracias a tu...Excelente! he optimizado una consulta gracias a tu post te lo agradezco.Manu Garciaguirrehttps://www.blogger.com/profile/10102650556740676707noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-82557375654925503752016-11-28T17:29:35.618+01:002016-11-28T17:29:35.618+01:00Muchas gracias por la explicación. Muchas gracias por la explicación. Magaly Churatahttps://www.blogger.com/profile/02323788267766198561noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-83288171870159169652016-09-29T19:54:11.637+02:002016-09-29T19:54:11.637+02:00Hola, ya entendí como funciona en cuanto a lo que ...Hola, ya entendí como funciona en cuanto a lo que quería era realizar top 5 de facturas especificas, entonces quedaría de la siguiente forma:<br /><br />SELECT *<br />FROM<br />(<br />SELECT ROW_NUMBER() OVER (PARTITION BY factura_id ORDER BY CampoParaOrdenar) AS Orden, CamposDeLaQuery<br />FROM TablaFacturas<br />Where factura_id in ('1234','5678','91011')-- con esto especifico <br />--que me traiga un top 5 de cada factua<br />) T1<br />WHERE Orden <= 5<br /><br />Gracias, lo entendi un poco tarde, soy estudiante.Fernando PPhttps://www.blogger.com/profile/15024138522561108370noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-45872996959157174622016-09-29T19:14:50.979+02:002016-09-29T19:14:50.979+02:00Este comentario ha sido eliminado por el autor.Fernando PPhttps://www.blogger.com/profile/15024138522561108370noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-2621990600824111652016-09-29T18:38:43.199+02:002016-09-29T18:38:43.199+02:00Hola Jaime, gracias por atender nuestras preguntas...Hola Jaime, gracias por atender nuestras preguntas, lo que quería hacer entender es que si puedo colocar ejemplo:<br /><br /> un Where factura_id in ('1234','5678','91011') y que me traiga un top 5 de esos 3 <br />Fernando PPhttps://www.blogger.com/profile/15024138522561108370noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-42147736703107684552016-09-28T09:36:42.858+02:002016-09-28T09:36:42.858+02:00Hola, Fernando:
Lo que necesitas se puede consegu...Hola, Fernando:<br /><br />Lo que necesitas se puede conseguir cambiando ligeramente el ejemplo del blog:<br /><br />SELECT *<br />FROM<br />(<br /> SELECT ROW_NUMBER() OVER (PARTITION BY factura_id ORDER BY CampoParaOrdenar) AS Orden, CamposDeLaQuery<br /> FROM TablaFacturas<br />) T1<br />WHERE Orden <= 5<br /><br /><br />Saludoslafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-86438964549697504312016-09-28T03:27:22.164+02:002016-09-28T03:27:22.164+02:00Hola, Suponiendo que tengo una tabla que tiene los...Hola, Suponiendo que tengo una tabla que tiene los campos factura_id, ruta_imagen, tipodocumento y cada factura_id tiene mas de 20 registros con esos campos, pero deseo hacer top 5 de cada factura_id de 30 factura_id especificos...Fernando PPhttps://www.blogger.com/profile/15024138522561108370noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-52707140302615789912016-09-10T06:55:19.802+02:002016-09-10T06:55:19.802+02:00Gracias :)Gracias :)lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-48399176004376278742016-09-10T00:05:11.703+02:002016-09-10T00:05:11.703+02:00Excelente aporte!!!Excelente aporte!!!Anonymoushttps://www.blogger.com/profile/03281431666789008567noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-41774159554432895442016-06-21T18:56:15.348+02:002016-06-21T18:56:15.348+02:00Hola, Guillermo:
Qué bien que te haya sido útil :...Hola, Guillermo:<br /><br />Qué bien que te haya sido útil :)lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-78926745873896132502016-06-21T18:48:01.026+02:002016-06-21T18:48:01.026+02:00Excelente!!! Muchas gracias por la explicación me ...Excelente!!! Muchas gracias por la explicación me he ahorrado horas de trabajo, ya que de lo contrario debía obtener el TOP 20 de cada días de un total de 6 meses de información transaccional de forma manual.<br /><br />Saludos,Anonymoushttps://www.blogger.com/profile/18107176705462773370noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-9005018017331088542016-05-13T13:15:30.931+02:002016-05-13T13:15:30.931+02:00Hola, Gabriel:
Para filtrar resultados distintos ...Hola, Gabriel:<br /><br />Para filtrar resultados distintos de un valor en una columna debes usar la siguiente sintaxis:<br /><br />WHERE Columna <> Valor<br /><br />En tu caso sería:<br /><br />WHERE Ubicacion <> N'valor que quieres que no se seleccione'<br /><br />Verás que he puesto N''. La N es necesaria si usas datos Unicode (nchar o nvarchar). Si no es así (char o varchar) debes quitar la N.<br /><br />Saludos.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-57966349169965056452016-05-13T12:45:00.256+02:002016-05-13T12:45:00.256+02:00Buen post, tengo un consulta, se puede combinar e...Buen post, tengo un consulta, se puede combinar el where ,distinct.<br />Por ejemplo si tengo la tabla departamentos con los colummnas numero,nombre,ubicacion y quisiera mostar el numero pero donde la ubicacion sea distinta.Anonymoushttps://www.blogger.com/profile/01623293801138959684noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-55280336235889620092016-04-29T20:57:19.630+02:002016-04-29T20:57:19.630+02:00Gracias, Juan Carlos.Gracias, Juan Carlos.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-78873434815389974612016-04-29T18:27:25.659+02:002016-04-29T18:27:25.659+02:00Excelente explicación!. Muchas graciasExcelente explicación!. Muchas graciasAnonymoushttps://www.blogger.com/profile/18087590166281536083noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-61220974014733770672016-04-13T18:39:09.003+02:002016-04-13T18:39:09.003+02:00Gracias a ti por tu comentario, Martín. Gracias a ti por tu comentario, Martín. lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-8302457736188131852016-04-13T18:17:39.026+02:002016-04-13T18:17:39.026+02:00excelente. saludos y muchas gracias por compartir....excelente. saludos y muchas gracias por compartir.Anonymoushttps://www.blogger.com/profile/12876964964988644653noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-7911623588270507762016-03-23T06:50:56.581+01:002016-03-23T06:50:56.581+01:00Jajajaja. Me alegro, Daniel.
SaludosJajajaja. Me alegro, Daniel.<br /><br />Saludoslafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-553506588606861622016-03-22T22:26:16.782+01:002016-03-22T22:26:16.782+01:00Yeah. Un dia de trabajo, resuelto en una linea. Gr...Yeah. Un dia de trabajo, resuelto en una linea. GraciasDanier Galiciahttps://www.blogger.com/profile/08056110937179123435noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-5250683667139801212015-03-12T07:31:26.136+01:002015-03-12T07:31:26.136+01:00Me alegro de haberte ayudado, Jorge.
Cualquier dud...Me alegro de haberte ayudado, Jorge.<br />Cualquier duda que tengáis la podéis plantear aquí.<br /><br />Saludoslafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-80048066784509568322015-03-11T22:16:22.035+01:002015-03-11T22:16:22.035+01:00Gracias por tu tiempo amigo, me salvaste la vida y...Gracias por tu tiempo amigo, me salvaste la vida y el trabajo :v. Jorgehttps://www.blogger.com/profile/16208990020478513801noreply@blogger.com