2009-07-25 4 views
0

Je dois SUM 3 Columns et renvoie la valeur dans mon résultat. Quelle est la bonne façon d'écrire cela?Comment écrire une instruction de sélection sous-sonique qui résume trois colonnes?

SubSonic.SqlQuery qs =new SubSonic.Select() 
.From(Table.ViewAllratingsGlo.Schema.TableName); 

SubSonic.Aggregate ag = SubSonic.Aggregate.Sum(("Column1+Column2+Column3), "Score"); 
qs.Aggregates.Add(ag); 

string SqlResult = qs.BuildSqlStatement(); 

Dans le SqlResult je viens de voir la dernière requête globale comme

Select SUM("Column1+Column2+Column3) As 'Score' 

Mais j'ai besoin les autres champs de ma table aussi.

Répondre

1

Dans ce type de requête, toutes les colonnes de votre instruction select doivent être des objets agrégés, il suffit de changer le type d'agrégat en groupe par plutôt que en somme.

SubSonic.SqlQuery qs = new Select(
    new SubSonic.Aggregate("column1+column2+column3", "Score", AggregateFunction.Sum), //the original 
    new SubSonic.Aggregate(TableName.Column4, AggregateFunction.GroupBy), //another column 
    new SubSonic.Aggregate(TableName.Column5, AggregateFunction.GroupBy) //another column 
) 
.From(Table.ViewAllratingsGlo.Schema.TableName); 
Questions connexes