Necesito crear una vista desde varias tablas. Una de las columnas en la vista tendrá que estar compuesta de varias filas de una de las tablas como una cadena con valores separados por comas.Uso de COALESCE en la vista de SQL
Aquí hay un ejemplo simplificado de lo que quiero hacer.
Customers:
CustomerId int
CustomerName VARCHAR(100)
Orders:
CustomerId int
OrderName VARCHAR(100)
Hay una relación de uno a muchos entre Cliente y Pedidos. Así que dado estos datos
Customers
1 'John'
2 'Marry'
Orders
1 'New Hat'
1 'New Book'
1 'New Phone'
quiero miras a ser así:
Name Orders
'John' New Hat, New Book, New Phone
'Marry' NULL
por lo que todo el mundo se muestra en la tabla, independientemente de si tienen o no órdenes.
Tengo un procedimiento almacenado que necesito traducir a esta vista, pero parece que no puede declarar params y llamar a los procesos almacenados dentro de una vista. ¿Alguna sugerencia sobre cómo hacer que esta consulta se visualice?
CREATE PROCEDURE getCustomerOrders(@customerId int)
AS
DECLARE @CustomerName varchar(100)
DECLARE @Orders varchar (5000)
SELECT @Orders=COALESCE(@Orders,'') + COALESCE(OrderName,'') + ','
FROM Orders WHERE [email protected]
-- this has to be done separately in case orders returns NULL, so no customers are excluded
SELECT @CustomerName=CustomerName FROM Customers WHERE [email protected]
SELECT @CustomerName as CustomerName, @Orders as Orders
¿Qué versión de SQL Server hace que ¿tener? – David
SQL Server 2008 – kateroh