Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Select con cabecera y detalle

Estas en el tema de Select con cabecera y detalle en el foro de Bases de Datos General en Foros del Web. Hola amigos que tal?. Recurro al foro por tengo una duda con una consulta, tengo una tabla de cabecera y otro de detalle, con registro ...
  #1 (permalink)  
Antiguo 05/09/2017, 08:55
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Select con cabecera y detalle

Hola amigos que tal?. Recurro al foro por tengo una duda con una consulta, tengo una tabla de cabecera y otro de detalle, con registro por ejemplo así:

Tabla de categorías:

id Nombre Descripción
-- ------------ ----------------
1, categoría 1, descripción de la categoría 1
2, categoría 2, descripción de la categoría 2

Tabla de foros:


id nombre descripcion categoria_id
-- ----------- -------------- -----------------
1, foro 1, nombre del foro 1, 1
2, foro 2, nombre del foro 2, 1
3, foro 3, nombre del foro 3, 2
4, foro 4, nombre del foro 4, 2


Y el resultado que espero es el siguiente:

================================
categoría 1, descripción de la categoría 1
================================
1, foro 1, nombre del foro 1, 1
2, foro 2, nombre del foro 2, 1

================================
categoría 2, descripción de la categoría 2
================================
3, foro 3, nombre del foro 3, 2
4, foro 4, nombre del foro 4, 2


Estoy hace rato con esto y no lo puedo sacar.

Muchas gracias
  #2 (permalink)  
Antiguo 06/09/2017, 08:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Select con cabecera y detalle

Veamos si esto da solucion a tu consulta

Código SQL:
Ver original
  1. CREATE TABLE Header
  2. (
  3.       InvoiceNumber INT
  4.     , [DATE] DATETIME
  5.     , Amount DECIMAL(10,2)
  6. )
  7. GO
  8.  
  9. INSERT INTO Header VALUES
  10. (100,GETDATE(),100.00),
  11. (101,GETDATE()+2,100.00)
  12. GO
  13.  
  14. CREATE TABLE Details
  15. (
  16.      InvoiceNumber INT
  17.     ,Customer VARCHAR(100)
  18.     ,Purchaseorder VARCHAR(100)
  19.     ,DetailAmount DECIMAL(30,2)
  20. )
  21. GO
  22.  
  23. INSERT INTO Details VALUES
  24. (100,'Customer A', 'Purchase Order A', 1000.2 ),
  25. (100,'Customer B', 'Purchase Order B', 787.23 ),
  26. (101,'Customer C', 'Purchase Order F', 12131.99),
  27. (101,'Customer D', 'Purchase Order G', 2334.18)
  28. GO
  29.  
  30. SELECT InvoiceNumber , [DATE] , Amount
  31. FROM
  32. (
  33.     SELECT CAST(InvoiceNumber AS sql_variant) InvoiceNumber , CAST( [DATE]  AS sql_variant) [DATE] , Amount
  34.     , CONVERT(FLOAT,InvoiceNumber) rnk
  35.     FROM Header
  36.     UNION ALL
  37.     SELECT Customer, purchaseorder, detailamount , rnk FROM (
  38.     SELECT id.*, concat(id.InvoiceNumber, '.', ROW_NUMBER() OVER (PARTITION BY id.InvoiceNumber ORDER BY id.invoicenumber)) rnk
  39.     FROM Details i
  40.     INNER JOIN Details id ON i.InvoiceNumber = id.InvoiceNumber) K
  41. )p ORDER BY rnk


InvoiceNumber Date Amount
100 2017-09-06 09:53:53.270 100.00
Customer A Purchase Order A 1000.20
Customer B Purchase Order B 787.23
Customer A Purchase Order A 1000.20
Customer B Purchase Order B 787.23
101 2017-09-08 09:53:53.270 100.00
Customer C Purchase Order F 12131.99
Customer D Purchase Order G 2334.18
Customer C Purchase Order F 12131.99
Customer D Purchase Order G 2334.18
__________________
MCTS Isaias Islas

Etiquetas: cabecera, detalle, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:43.