
Ayuda en subconsulta
Publicado por Emma B. (12 intervenciones) el 18/02/2015 15:03:26
Hola es la 1ra vez que escribo en este foro y necesito ayuda con una subconsulta que estoy haciendo. Estoy usando como gestor de bd access 2007 y c++ para la parte visual y gestión. Tengo una tabla x donde tengo fecha, hora y dato, lo que necesito es sacar el día donde hubo el máximo de datos diario y ponerlo en un reporte. Me explico, por una parte tengo que sacar las sumas de datos por día, luego sacar el máximo de esas sumas y además el día que hubo ese máximo. Ya la parte de sacar el máximo lo hice y sale bien esta es la consulta
ADOQuery3->Active=False;
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("SELECT MAX(pp) AS maxdia FROM (SELECT SUM(Radiacion) AS pp, Fecha FROM DatosActino GROUP BY Fecha )WHERE (YEAR(Fecha)>= :anno AND YEAR(Fecha)<= :anno2) AND (MONTH(Fecha)= "+temp+")");
ADOQuery3->Parameters->ParamByName("anno")->Value = ComboBox3->Text;
ADOQuery3->Parameters->ParamByName("anno2")->Value = ComboBox4->Text;
ADOQuery3->Active=True;
y traté de hacer esto
ADOQuery3->Active=False;
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("SELECT MAX(pp) AS maxdia, DAY(Fecha) AS dia FROM (SELECT SUM(Radiacion) AS pp, Fecha FROM DatosActino GROUP BY Fecha )WHERE (YEAR(Fecha)>= :anno AND YEAR(Fecha)<= :anno2) AND (MONTH(Fecha)= "+temp+")");
ADOQuery3->Parameters->ParamByName("anno")->Value = ComboBox3->Text;
ADOQuery3->Parameters->ParamByName("anno2")->Value = ComboBox4->Text;
ADOQuery3->Active=True;
pero me da error obvio!! pos la tabla solo me devuelve un valor máximo y lo esto pidiendo con muchas fechas y ahora toy traba pos no se como hacerlo en sql pa no tener que programarlo en c++. Please si alguien me puede ayudar lo agradecería un montón.
Si no entienden me dicen y lo explico mejor
ADOQuery3->Active=False;
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("SELECT MAX(pp) AS maxdia FROM (SELECT SUM(Radiacion) AS pp, Fecha FROM DatosActino GROUP BY Fecha )WHERE (YEAR(Fecha)>= :anno AND YEAR(Fecha)<= :anno2) AND (MONTH(Fecha)= "+temp+")");
ADOQuery3->Parameters->ParamByName("anno")->Value = ComboBox3->Text;
ADOQuery3->Parameters->ParamByName("anno2")->Value = ComboBox4->Text;
ADOQuery3->Active=True;
y traté de hacer esto
ADOQuery3->Active=False;
ADOQuery3->SQL->Clear();
ADOQuery3->SQL->Add("SELECT MAX(pp) AS maxdia, DAY(Fecha) AS dia FROM (SELECT SUM(Radiacion) AS pp, Fecha FROM DatosActino GROUP BY Fecha )WHERE (YEAR(Fecha)>= :anno AND YEAR(Fecha)<= :anno2) AND (MONTH(Fecha)= "+temp+")");
ADOQuery3->Parameters->ParamByName("anno")->Value = ComboBox3->Text;
ADOQuery3->Parameters->ParamByName("anno2")->Value = ComboBox4->Text;
ADOQuery3->Active=True;
pero me da error obvio!! pos la tabla solo me devuelve un valor máximo y lo esto pidiendo con muchas fechas y ahora toy traba pos no se como hacerlo en sql pa no tener que programarlo en c++. Please si alguien me puede ayudar lo agradecería un montón.
Si no entienden me dicen y lo explico mejor
Valora esta pregunta


0