public void TestSelect_MultipleGroupByItems() { SelectBuilder builder = new SelectBuilder(); AliasedSource table = builder.AddTable(new Table("Table")); builder.AddProjection(table.Column("Column1")); builder.AddProjection(table.Column("Column2")); builder.AddProjection(new Function("SUM", table.Column("Column3"))); builder.AddGroupBy(table.Column("Column1")); builder.AddGroupBy(table.Column("Column2")); Formatter formatter = new Formatter(); string commandText = formatter.GetCommandText(builder); string expected = "SELECT Table.Column1, Table.Column2, SUM(Table.Column3) FROM Table GROUP BY Table.Column1, Table.Column2"; Assert.AreEqual(expected, commandText, "The wrong SQL was generated."); }
private void buildGroupByList(MatchResult result, SelectBuilder builder) { MatchResult multiple = result.Matches[SqlGrammar.GroupByList.Multiple.Name]; if (multiple.IsMatch) { MatchResult firstResult = multiple.Matches[SqlGrammar.GroupByList.Multiple.First]; IGroupByItem first = (IGroupByItem)buildArithmeticItem(firstResult); builder.AddGroupBy(first); MatchResult remainingResult = multiple.Matches[SqlGrammar.GroupByList.Multiple.Remaining]; buildGroupByList(remainingResult, builder); return; } MatchResult single = result.Matches[SqlGrammar.GroupByList.Single]; if (single.IsMatch) { IGroupByItem item = (IGroupByItem)buildArithmeticItem(single); builder.AddGroupBy(item); return; } throw new InvalidOperationException(); }
public void TestSelect_GroupBy() { SelectBuilder builder = new SelectBuilder(); AliasedSource table = builder.AddTable(new Table("Table")); builder.AddProjection(new Function("COUNT", new NumericLiteral(1))); builder.AddGroupBy(table.Column("Column")); Formatter formatter = new Formatter(); string commandText = formatter.GetCommandText(builder); string expected = "SELECT COUNT(1) FROM Table GROUP BY Table.Column"; Assert.AreEqual(expected, commandText, "The wrong SQL was generated."); }