J'ai 2 fonctions de table qui sont très similaires, la seule différence est que j'ai besoin d'un Max()
appel supplémentaire sur le second. Je veux les consolider en un, mais je n'arrive pas à comprendre comment le faire.Si déclaration dans la table Valeur fonction
Première fonction
ALTER FUNCTION [DayTrade].[udf_GetTotalLast90Days]
(
@Date datetime
)
RETURNS TABLE
AS
RETURN
(
SELECT Acct, Sum(AGGCnt) As AGGCnt, AGGNumb
FROM DT.vwGet_CountHist
WHERE (PostDate >= @Date - 90) AND (PostDate <= @Date)
GROUP BY Acct, AGGNumb
)
deuxième fonction
ALTER FUNCTION [DayTrade].[udf_GetTotalLast90Days]
(
@Date datetime
)
RETURNS TABLE
AS
RETURN
(
SELECT Acct, Sum(AGGCnt) As AGGCnt, Max(AGGNumb) As AGGNumb
FROM DT.vwGet_CountHist
WHERE (PostDate >= @Date - 90) AND (PostDate <= @Date)
GROUP BY Acct
)
Comme vous pouvez voir la différence dans la deuxième est que je suis le Max(AGGNumb) As AGGNumb
et ajoutais un retrait du groupe Bys. J'ai essayé de changer cela et de passer une variable supplémentaire @Agg qui était un champ de bit pour ensuite utiliser un IF statement
pour choisir quelle fonction utiliser mais je n'ai pas pu le faire fonctionner.
Des suggestions sur la façon de consolider ces deux fonctions en 1?
Merci
J'ai mis à jour le code ci-dessus, c'est @Date sur les deux où les clauses pas @businessDate, cela fait-il une différence? – Taryn
+1. Cela semble meilleur que ma méthode – Simon
@bluefeet: vous avez toujours besoin d'une variable de contrôle pour décider quelle requête exécuter. Vous pouvez aussi bien avoir 2 paramètres pour contrôler cela – gbn