CREATE DATABASE UNAC /*CREAMOS LA BD UNAC*/
USE UNAC /*PONEMOS EN USO LA BD UNAC
GO O ; --- COMANDO PARA HACER LA EJECUCION JUNTO AL RESTO DEL CODIGO, ES
OPCIONAL PERO
---ES MEJOR YA QUE COMPILAS MAS RAPIDO o tambien puedes utilizar el ; esto
es en lo formal
---si lo quieres hacer manera informal solo le puedes hacer con use +
"Nombre de la BD"
---EXISTEN 2 FORMAS DE MARCAR O HACER COMENTARIOS
---LA PRIMERA ES UTILIZAR LOS GUIONES = --- ESTO SOLO VA A COMENTAR UNA
SOLA LINEA
---LA SEGUNDA ES /**/ ESTA TE PERMITE COMENTAR UN PARRAFO O TODO LO QUE
DESEES*/
---SELECT ---SERVI PARA SELECCIONAR ALGUNOS DATOS DE LA BD
--- * FROM secDefinicionBalance --- NO OLVIDAAR ANTES PONER EL * ,EL FROM SE
UTILIZA PARA SEÑALAR LA TABLA A LA QUE SE VA A MOSTRAR RESULTADOS, EN ESTE CASO
LA TABLA EMPLOYEES
/*CREAMOS LA TABLA secDefinicionBalance
CON LOS ID, CODIGO, NIVEL, DESCRIPCION, SIGNO, PADRE ID Y ARBOL
CHAR DATOS DE CADANA DE TAMYO FIJO ES DECIR UNA CANTIDAD EXACTA
INT TIPO DE VALOR ENTERO
VARCHAR DATOS DE CADENA DE TAMÑO VARIABLE PUEDE ESTAR COMPRENDIDO ENTRE DE 1
HASTA 9000 CREO
NULL es un marcador especial usado en el lenguaje de consulta estructurado para
indicar que no existe un valor de datos en la base de datos*/
CREATE TABLE secDefinicionBalance(
BalanceID int NOT NULL,
Codigo varchar(8) NULL,
Nivel int NULL,
Descripcion varchar(100) NULL,
Signo int NULL,
PadreID int NULL,
Arbol char(1) NULL
)
/*AQUI INGRESAMOS DATOS A LA TABLA*/
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (1, N'A', 1, N'ACTIVO', 0, 0, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (2, N'A', 2, N'ACTIVO NO CORRIENTE', 0, 1, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (3, N'B', 2, N'ACTIVO CORRIENTE', 0, 1, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (4, N'I', 3, N'Inmovilizado Intangible', 0, 2, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (5, N'II', 3, N'Inmovilizado material', 0, 2, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (6, N'III', 3, N'Inversiones inmobiliarias', 0, 2, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (7, N'IV', 3, N'Inversiones en empresas del grupo y
asociadas a largo plazo', 0, 2, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (8, N'V', 3, N'Inversiones financieras a largo plazo', 0,
2, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (9, N'VI', 3, N'Activos por impuesto diferido', 0, 2,
N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (10, N'I', 3, N'Activos no corrientes mantenidos para la
venta', 0, 3, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (11, N'II', 3, N'Existencias', 0, 3, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (12, N'III', 3, N'Deudores comerciales y otras cuentas a
cobrar', 0, 3, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (13, N'IV', 3, N'Inversiones en empresas del grupo y
asociadas a corto plazo', 0, 3, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (14, N'V', 3, N'Inversiones financieras a corto plazo', 0,
3, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (15, N'VI', 3, N'Periodificaciones a corto plazo', 0, 3,
N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (16, N'VII', 3, N'Efectivo y otros activos líquidos
equivalentes', 0, 3, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (17, N'1', 4, N'Desarrollo', 0, 4, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (18, N'2', 4, N'Concesiones', 0, 4, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (19, N'3', 4, N'Patentes, licencias, marcas y similares',
0, 4, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (20, N'4', 4, N'Fondo de comercio', 0, 4, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (21, N'5', 4, N'Aplicaciones informáticas', 0, 4, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (22, N'6', 4, N'Otro inmovilizado intangible', 0, 4, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (23, N'1', 4, N'Terrenos y construcciones', 0, 5, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (24, N'2', 4, N'Instalaciones técnicas y otro inmovilizado
material', 0, 5, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (25, N'3', 4, N'Inmovilizado en curso y anticipos', 0, 5,
N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (26, N'1', 4, N'Terrenos', 0, 6, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (27, N'2', 4, N'Construcciones', 0, 6, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (28, N'1', 4, N'Instrumentos de patrimonio', 0, 7, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (29, N'2', 4, N'Créditos a empresas', 0, 7, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (30, N'3', 4, N'Valores representativos de deuda', 0, 7,
N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (72, N'201', 5, N'Cuenta 201', 1, 17, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (73, N'2801', 5, N'Cuenta 2801', 1, 17, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (74, N'2901', 5, N'Cuenta 2901', 1, 17, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (75, N'202', 5, N'Cuenta 202', 1, 18, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (76, N'2802', 5, N'Cuenta 2802', 1, 18, N'A')
INSERT secDefinicionBalance (BalanceID, Codigo, Nivel, Descripcion, Signo,
PadreID, Arbol) VALUES (77, N'2902', 5, N'Cuenta 2902 abc', 1, 18, N'A')
SELECT * FROM secDefinicionBalance /*MANERA DE CONSULTAR UNA TABLA DE NUESTRA
BD*/
/*AQUI PROCEDEMOS HACER LA RECURISIVIDAD EN LA TABLA*/
WITH CTE AS ( ---WITH ES UNA CLAUSULA OPCIONAL QUE PRECEDE DE SELECT
SELECT BalanceID, PadreID, Nivel, Descripcion, CAST(BalanceID AS
varbinary(max)) AS Orden ---CAST ES UNA FUNCION COMPLEJA QUE TRANSFORMA 1 O +
VALORESDE TIPO DATO A OTROS
---MAX DEVUELVE EL VALOR MAXIMO DE LA FILA
FROM secDefinicionBalance
WHERE PadreID = 0 ---- WHERE ESPECIFICA QUE CRITERIO SE PUEDE CUMPLIR EN LOS
VALORES DEL CAMPO CON RESULTADO DE CONSULTA
UNION ALL ---COMBINA LOS RESULTADOS DE UNO O MAS CONSULTAS
SELECT t.BalanceID, t.PadreID, t.Nivel, t.Descripcion, Orden + CAST(t.PadreID
AS varbinary(max)) AS Orden
FROM secDefinicionBalance t
INNER JOIN CTE c ON t.PadreID = c.BalanceID ---INNER JOIN SE ENCARGA DE
COMBINAR DOS TABLAS SI ENCUENTRAN VALORES COINICIDENTES DENTRO DE SUS CAMPOS
)
SELECT * FROM CTE
ORDER BY Orden;