Hola,
Soy novato y quisiera su opinion sobre los siguientes dos SELECT,
Ambos me regresan los mismos resultados (acumulados por dia,mes,año)
Me pregunto cual de las dos se ejecuta mas rapido, pensando en que a futuro
la tabla de movimientos tenga muchos...
Aprecio mucho su tiempo y atención,
SELECT Codigos.cla_cod, Codigos.des_cod,
(SELECT ISNULL(SUM(Movimientos.car_mov), 0)
FROM Movimientos
WHERE Movimientos.ccc_mov = Codigos.cla_cod
AND fec_mov >= CONVERT(varchar(8), GETDATE(), 112)
AND fec_mov < CONVERT(varchar(8), GETDATE() + 1, 112)) AS
DIAC,
(SELECT ISNULL(SUM(Movimientos.abo_mov), 0)
FROM Movimientos
WHERE Movimientos.ccc_mov = Codigos.cla_cod
AND fec_mov >= CONVERT(varchar(8), GETDATE(), 112)
AND fec_mov < CONVERT(varchar(8), GETDATE() + 1, 112)) AS
DIAA,
(SELECT ISNULL(SUM(Movimientos.car_mov), 0)
FROM Movimientos
WHERE Movimientos.ccc_mov = Codigos.cla_cod
AND Movimientos.fec_mov >= CONVERT(varchar(6), GETDATE(),
112) + '01'
AND Movimientos.fec_mov < CONVERT(varchar(6), DATEADD(mm, 1,
GETDATE()), 112)) AS MESC,
(SELECT ISNULL(SUM(Movimientos.abo_mov), 0)
FROM Movimientos
WHERE Movimientos.ccc_mov = Codigos.cla_cod
AND Movimientos.fec_mov >= CONVERT(varchar(6), GETDATE(),
112) + '01'
AND Movimientos.fec_mov < CONVERT(varchar(6), DATEADD(mm, 1,
GETDATE()), 112)) AS MESA,
ISNULL(SUM(Movimientos.car_mov), 0) AS AAAc,
ISNULL(SUM(Movimientos.abo_mov), 0) AS AAAa
FROM Codigos RIGHT OUTER JOIN Movimientos ON Movimientos.ccc_mov =
Codigos.cla_cod
WHERE (Movimientos.fec_mov >= CONVERT(varchar(4), GETDATE(), 112) + '0101')
AND (Movimientos.fec_mov < CONVERT(varchar(4), DATEADD(yyyy, 1,
GETDATE()), 112))
GROUP BY Codigos.cla_cod, Codigos.des_cod
**************************************************************************
SELECT Codigos.cla_cod,Codigos.des_cod,
ISNULL(SUM(case when Movimientos.fec_mov >= CONVERT(varchar(8), GETDATE(),
112) AND Movimientos.fec_mov < dateadd(day, 1, CONVERT(varchar(8),
GETDATE(), 112)) then Movimientos.car_mov end),0) AS DiaC,
ISNULL(SUM(case when Movimientos.fec_mov >= CONVERT(varchar(8), GETDATE(),
112) AND Movimientos.fec_mov < dateadd(day, 1, CONVERT(varchar(8),
GETDATE(), 112)) then Movimientos.abo_mov end),0) AS DiaA,
ISNULL(SUM(case when fec_mov >= CONVERT(varchar(6), GETDATE(), 112) + '01'
AND fec_mov < dateadd(month, 1, CONVERT(varchar(6), GETDATE(), 112) + '01')
then Movimientos.car_mov end),0) AS MesC,
ISNULL(SUM(case when fec_mov >= CONVERT(varchar(6), GETDATE(), 112) + '01'
AND fec_mov < dateadd(month, 1, CONVERT(varchar(6), GETDATE(), 112) + '01')
then Movimientos.abo_mov end),0) AS MesA,
ISNULL(SUM(Movimientos.car_mov),0) AS AaaC,
ISNULL(SUM(Movimientos.abo_mov),0) AS AaaA
FROM Codigos RIGHT OUTER JOIN Movimientos
ON Movimientos.ccc_mov = Codigos.cla_cod
WHERE fec_mov >= ltrim(year(getdate())) + '0101' AND fec_mov <
ltrim(year(getdate()) + 1) + '0101'
GROUP BY Codigos.cla_cod, Codigos.des_cod
Leer las respuestas