@@ -819,7 +819,7 @@ public void EscapeClauseThrowsForMultipleCharacters()
819819 [ Fact ]
820820 public void BasicSelectRaw_WithNoTable ( )
821821 {
822- var q = new Query ( ) . SelectRaw ( "somefunction() as c1" ) ;
822+ var q = new Query ( ) . SelectRaw ( "somefunction() as c1" ) ;
823823
824824 var c = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
825825 Assert . Equal ( "SELECT somefunction() as c1" , c . ToString ( ) ) ;
@@ -848,6 +848,60 @@ public void BasicSelect_WithNoTableWhereRawClause()
848848 var c = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
849849 Assert . Equal ( "SELECT [c1] WHERE 1 = 1" , c . ToString ( ) ) ;
850850 }
851-
851+
852+ [ Fact ]
853+ public void BasicSelectAggregate ( )
854+ {
855+ var q = new Query ( "Posts" ) . Select ( "Title" )
856+ . SelectAggregate ( "sum" , "ViewCount" ) ;
857+
858+ var sqlServer = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
859+ Assert . Equal ( "SELECT [Title], SUM([ViewCount]) FROM [Posts]" , sqlServer . ToString ( ) ) ;
860+ }
861+
862+ [ Fact ]
863+ public void SelectAggregateShouldIgnoreEmptyFilter ( )
864+ {
865+ var q = new Query ( "Posts" ) . Select ( "Title" )
866+ . SelectAggregate ( "sum" , "ViewCount" , q => q ) ;
867+
868+ var sqlServer = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
869+ Assert . Equal ( "SELECT [Title], SUM([ViewCount]) FROM [Posts]" , sqlServer . ToString ( ) ) ;
870+ }
871+
872+ [ Fact ]
873+ public void SelectAggregateShouldIgnoreEmptyQueryFilter ( )
874+ {
875+ var q = new Query ( "Posts" ) . Select ( "Title" )
876+ . SelectAggregate ( "sum" , "ViewCount" , new Query ( ) ) ;
877+
878+ var sqlServer = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
879+ Assert . Equal ( "SELECT [Title], SUM([ViewCount]) FROM [Posts]" , sqlServer . ToString ( ) ) ;
880+ }
881+
882+ [ Fact ]
883+ public void BasicSelectAggregateWithAlias ( )
884+ {
885+ var q = new Query ( "Posts" ) . Select ( "Title" )
886+ . SelectAggregate ( "sum" , "ViewCount as TotalViews" ) ;
887+
888+ var sqlServer = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
889+ Assert . Equal ( "SELECT [Title], SUM([ViewCount]) AS [TotalViews] FROM [Posts]" , sqlServer . ToString ( ) ) ;
890+ }
891+
892+ [ Fact ]
893+ public void SelectWithFilter ( )
894+ {
895+ var q = new Query ( "Posts" ) . Select ( "Title" )
896+ . SelectAggregate ( "sum" , "ViewCount as Published_Jan" , q => q . Where ( "Published_Month" , "Jan" ) )
897+ . SelectAggregate ( "sum" , "ViewCount as Published_Feb" , q => q . Where ( "Published_Month" , "Feb" ) ) ;
898+
899+ var pgSql = Compilers . CompileFor ( EngineCodes . PostgreSql , q ) ;
900+ Assert . Equal ( "SELECT \" Title\" , SUM(\" ViewCount\" ) FILTER (WHERE \" Published_Month\" = 'Jan') AS \" Published_Jan\" , SUM(\" ViewCount\" ) FILTER (WHERE \" Published_Month\" = 'Feb') AS \" Published_Feb\" FROM \" Posts\" " , pgSql . ToString ( ) ) ;
901+
902+ var sqlServer = Compilers . CompileFor ( EngineCodes . SqlServer , q ) ;
903+ Assert . Equal ( "SELECT [Title], SUM(CASE WHEN [Published_Month] = 'Jan' THEN [ViewCount] END) AS [Published_Jan], SUM(CASE WHEN [Published_Month] = 'Feb' THEN [ViewCount] END) AS [Published_Feb] FROM [Posts]" , sqlServer . ToString ( ) ) ;
904+ }
905+
852906 }
853907}
0 commit comments