Hola Nicolas
Buenas tardes
Eso no funcionaria , si tenes sql server 2005 en adelante podes usar Rank(), te 
paso la documentancion 
https://docs.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql

Si tenes identificador único en tabla detalle, sino la clave que tengas la usas 
en el partition by va la factura, y el order by voy a usar Det.IDarticulo, 
Det.Cantidad  como clave para el ejemplo espero que se entienda y te sirva.
Quedaría asi
RANK() OVER (PARTITION BY Det.Factura order by Det.IDarticulo, Det.Cantidad) as 
id ,


Y quedaria asi
SELECT Det.IDarticulo, Det.Cantidad, Det.Precio,
--aqui va el campo para ver que carga este se puede obviar es solo para mostrar 
como queda
             RANK() OVER (PARTITION BY Det.Factura order by Det.IDarticulo, 
Det.Cantidad) as IDDetalle,
--aqui va el campo de descuento
             Case When RANK() OVER (PARTITION BY Det.Factura order by 
Det.IDarticulo, Det.Cantidad) = 1
                  then  Cab.Descuento
                  Else 0
             End Descuento
FROM Detalle INNER JOIN Encabezado ON Det.Factura = Cab.Factura
WHERE CAB.Factura = '00015    '


Saludos

Martin M. Gamazo
Analista Programador
Sistemas y Desarrollo Tecnológico
La Rioja 301 (1214) Ciudad de Buenos Aires
Tel.: (+5411) 4956 9622 Int. 1461 | Directo: (+5411) 4956 9761
www.oca.com.ar<http://www.oca.com.ar/>
[firma-OCA-2015-cs3-01 - copia]

De: [email protected] [mailto:[email protected]] En nombre de Omar Bellio
Enviado el: miércoles, 19 de abril de 2017 14:59
Para: GUFA List Member
Asunto: [GUFA] OT sentencia SQL

Me imagino que si hicieras un engendro tal como, por ejemplo (asumiendo que la 
tabla Detalle tenga un campo identificador propio, digamos idDetalle):

SELECT Det.IDarticulo, Det.Cantidad, Det.Precio,
            Case
                        When Det.idDetalle = (select min(idDetalle) from 
Detalle) then  Cab.Descuento
                        Else 0
            End Descuento
FROM Detalle INNER JOIN Encabezado ON Det.Factura = Cab.Factura
Order By Det.idDetalle

No lo probé pero supongo que esto o algo muy similar te daría el resultado que 
estás buscando, pero la verdad es que yo tomaría el cursor una vez que lo tengo 
dentro del fox y le haría una pasada para eliminar todos los valores que no me 
interesan.

De: [email protected]<mailto:[email protected]> [mailto:[email protected]] En nombre 
de Ariel Arrebola
Enviado el: miércoles, 19 de abril de 2017 09:08
Para: GUFA List Member
Asunto: [GUFA] OT sentencia SQL

Hola Nicolas, cambia en Inner por left

SELECT Det.IDarticulo, Det.Cantidad, Det.Precio, Cab.Descuento
FROM Detalle Det LEFT JOIN Encabezado Cab ON Det.Factura = Cab.Factura

saludos

El 15 de abril de 2017, 15:32, Nicolas Arnaldo 
<[email protected]<mailto:[email protected]>> escribió:
Buenas tardes grupo, tengo un problema que no se como resolver en SQL.

Tengo dos tablas, maestro y detalles.
En una sentencia SQL (sql server) necesito devolver todos los items, y tambien
traer en un registro un valor del encabezado, sin que ese valor se repita.

Es decir, EJ.

Factura Articulo_Detalle Cantidad_Detalle Precio_Detalle    Descuento_Encabezado
00015    C45                   10                     $150.50              $20
00015    C50                    15                    $220.75              $0
00015    C75                      5                    $750.15              $0

Si hago
SELECT Det.IDarticulo, Det.Cantidad, Det.Precio, Cab.Descuento
FROM Detalle INNER JOIN Encabezado ON Det.Factura = Cab.Factura

el descuento del encabezado se repite en todos los items, estoy tratando de 
usar DISTINCT
pero no logro llegar al resultado deseado.
El importe de descuento lo deberia poner en cualquier item, no importa cual, 
simplemente
con que figure el importe del encabezado una sola vez es suficiente.

Muchas gracias de antemano.



[https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif]<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>

Virus-free. 
www.avast.com<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>


Responder a