La forma manual:
Código SQL:
Ver originalINSERT INTO cuentas VALUES (1,1,50)
INSERT INTO cuentas VALUES (1,2,100)
INSERT INTO cuentas VALUES (1,3,50)
INSERT INTO cuentas VALUES (1,4,50)
INSERT INTO cuentas VALUES (1,5,100)
INSERT INTO cuentas VALUES (1,6,50)
INSERT INTO cuentas VALUES (1,7,50)
INSERT INTO cuentas VALUES (1,8,100)
INSERT INTO cuentas VALUES (1,9,50)
INSERT INTO cuentas VALUES (1,10,50)
INSERT INTO cuentas VALUES (1,11,100)
INSERT INTO cuentas VALUES (1,12,50)
Y la forma automatica:
Código SQL:
Ver original--insertamos los meses del año para 2016
INSERT INTO cuentas
SELECT completa.* FROM(
SELECT id_cliente, id_year_month,50 AS monto FROM(
SELECT t1.id AS id_cliente, t1.nombre,t2.id AS id_year_month, id_year, id_mont FROM clientes AS t1,
years_months AS t2) AS t2
LEFT JOIN years AS t3 ON (t2.id_year=t3.id)
WHERE t3.years=2016 --and t2.nombre='Libras3'
) AS completa
LEFT JOIN cuentas AS t4 ON (completa.id_cliente=t4.id_cliente AND completa.id_year_month=t4.years_months)
WHERE t4.id IS NULL
Que hace la consulta, bueno....primero obtenemos un producto cartesiano de los clientes con la tabla year_months(producto cartesiano: por cada renglon de years_months tendremos uno para clientes), con esos datos ahora obtenemos el año(para tener 12 meses para cada año) ya teniendo esta informacion podemos unirla a la tbala de cuentas, para saber que cliente ya esta dado de alta para cierto año, los que no esten dados de alta se insertaran :)
P.D: No naci sabiendo SQL server ha sido de poco a poco ir aprendiendo cosas nuevas....y sigo aprendiendo ;)