Perfeccionandome como Arquitecto de software , alto conocimiento de diferentes Reglas de Negocio :Comercial, Ventas, Producción, Servicios, amante lector de
guias en especializacion en la Arquitectura y diseño de Software, aplicación personal en la metodologia Japonesa KAIZEN con muchos años de experiencia en el desarrollo de aplicaciones para
empresas de rubro Comercial, Producción y Servicios, como pasatiempo trato de aprender sobre desarrollo de videojuegos (Unity,Unreal), IOT (arduino , raspberry PI) ,actualmente estoy en el
aprendizaje DE PYTHON, C# avanzado y desaarrollar una arquitectura Limpia de Software.
Especialidades: C# , SQL SERVER ,VB 6, VBSCRIPT ,Xamarin, arquitectura MVC/MVVM +LOCATOR , Unity 3d, JAVA, JAVASCRIPT, UNREAL,PYTHON, ASP.NET, Crystal Report 8.5/10, Android Studio, HTML5
Redator a cargo del blog : https://lienzodelavida.blogspot.com/
Para poder concatenar requerimos de la función STUFF y de la clausula FOR XML utilizando el modo PATH podemos concatenar las filas y poder agruparlas a un nivel superior separado por comas.
--Copia desde Aquí
--Creamos unas tablas temporales de tipo variable
DECLARE @SUJETO TABLE(NOMBRE VARCHAR(10),TIPO VARCHAR(15))
DECLARE @RELACION TABLE(TIPO VARCHAR(15), DESCRIPCION VARCHAR(20))
--insertamos registros
INSERT INTO @SUJETO VALUES ('Juan','Fruta')
INSERT INTO @SUJETO VALUES ('Carlos','Comida')
INSERT INTO @SUJETO VALUES ('Yoel','Entrada')
INSERT INTO @SUJETO VALUES ('Yoel','Postre')
INSERT INTO @RELACION VALUES ('Fruta','Platano')
INSERT INTO @RELACION VALUES ('Fruta','Manzana')
INSERT INTO @RELACION VALUES ('Fruta','Pera')
INSERT INTO @RELACION VALUES ('Fruta','Uva')
INSERT INTO @RELACION VALUES ('Comida','Pizza')
INSERT INTO @RELACION VALUES ('Comida','Tallarin Verde')
INSERT INTO @RELACION VALUES ('Comida','Lomo Saltado')
INSERT INTO @RELACION VALUES ('Postre','Gelatina')
INSERT INTO @RELACION VALUES ('Postre','Torta Chocolate')
INSERT INTO @RELACION VALUES ('Postre','Helado Vainilla')
INSERT INTO @RELACION VALUES ('Entrada','Papa Rellena')
INSERT INTO @RELACION VALUES ('Entrada','Ensalada')
INSERT INTO @RELACION VALUES ('Entrada','Brochetas de Pollo')
--agregamos STUFF para agrupar los registros .
SELECT S.NOMBRE ,S.TIPO,STUFF((SELECT ','+ R.DESCRIPCION FROM @RELACION R WHERE R.TIPO =S.TIPO ORDER BY R.DESCRIPCION FOR XML PATH('')),1,1,'') AS DESCRIPCIÓN FROM @SUJETO S
--Copia hasta Aquí
--Ejecutar la Consulta
RESULTADO EN TEXTO
NOMBRE TIPO DESCRIPCIÓN
---------- --------------- ----------------------------------------
Juan Fruta Manzana,Pera,Platano,Uva
Carlos Comida Lomo Saltado,Pizza,Tallarin Verde
Yoel Entrada Brochetas de Pollo,Ensalada,Papa Rellena
Yoel Postre Gelatina,Helado Vainilla,Torta Chocolate
Esta manera es mas practica que trabajar con un CURSOR.
Crear una vista :
create view [dbo].[wrapped_rand_view]
as
select rand( ) as random_value
GO
Crear una Función :
CREATE FUNCTION [dbo].[aleatorios]
(
@Upper numeric(4,2),
@Lower numeric(4,2)
)
RETURNS numeric(4,2)
AS
BEGIN
declare @Random numeric(4,2),
@f float
set @f = (select random_value from wrapped_rand_view)
set @Random = (ROUND(((@Upper - @Lower -0.01) * @f + @Lower), 2))
return @Random
END
GO
Ejecutar la Función
select dbo.aleatorios(0.1, 3.00 )
Puedes incluir cualquier rango numérico
Espero que les sirva