This is the solution :
(But I still don't know why my parameter is a DateTime and the field "Dat_Echeance" is a smalldatetime and it doesn't work. so i should convert with a (DT_WSTR, 10) to match the two things? and i can't convert my parameter to a DT_Time). So, it worked with this :
"select Dat_Mvt_Ecrs ,Cod_Type_Tcn_Transcod ,Cod_Devise ,Cod_Famille_Taux ,Id_Fam_Tranche_Rec ,Id_Tranche_Rec_Dur_Init ,Cod_Emet ,Lib_Zone_Geo_Mec ,Id_Categorie_Not ,coalesce(SUM(Taux * Emiss * Qte_Devise) ,0) AS Qte_Emiss_Taux ,Round(coalesce(SUM(Taux * Emiss * Qte_Devise * Tx_Actuariel) /
case when SUM(Taux * Emiss * Qte_Devise)=0
then NULL
else SUM(Taux * Emiss * Qte_Devise)
end
,0)
,4) as Mnt_Remun_Emiss_Tx , Round(coalesce(SUM(Taux * Emiss * Qte_Devise * Tx_Declare) / case when SUM(Taux * Emiss * Qte_Devise)=0
then NULL
else SUM(Taux * Emiss * Qte_Devise)
end
,0)
,4) as Mnt_Remun_Emiss_Tx_Monet, coalesce(SUM(Marge * Emiss * Qte_Devise)
,0) AS Qte_Emiss_Marge ,Round(coalesce(SUM(Marge * Emiss * Qte_Devise * Mnt_Marge_Eonia) / case when SUM(Marge * Emiss * Qte_Devise)
=0
then NULL
else SUM(Marge * Emiss * Qte_Devise)
end
,0)
,4) as Mnt_Remun_Emiss_Marge, Round(coalesce(SUM(Marge * Emiss * Qte_Devise * Mnt_Marge_Cal) /
case when SUM(Marge * Emiss * Qte_Devise)
=0
then NULL
else SUM(Marge * Emiss * Qte_Devise)
end
,0)
,4) as Mnt_Remun_Emiss_Marge_Cal ,coalesce(SUM(case when Dat_Echeance= " + (DT_WSTR, 10) @[User::p_Date_Ref] + "
then 0
else Taux * Qte_Devise
end
)
,0) AS Qte_Ecrs_Tx ,coalesce(SUM(case when Dat_Echeance= " + (DT_WSTR, 10) @[User::p_Date_Ref] + "
then 0
else Marge * Qte_Devise
end)
,0) AS Qte_Encours_Marge
FROM Wrk_Agreg_Faible
WHERE Id_Tranche_Rec_Dur_Init IS NOT NULL
AND Cod_Famille_Taux <> 'S'
GROUP BY Dat_Mvt_Ecrs
,Cod_Type_Tcn_Transcod
,Cod_Devise
,Cod_Famille_Taux
,Id_Fam_Tranche_Rec
,Id_Tranche_Rec_Dur_Init
,Cod_Emet
,Lib_Zone_Geo_Mec
,Id_Categorie_Not"