get group by variations working
This commit is contained in:
parent
b703e04af3
commit
74c6d39b23
|
@ -601,7 +601,19 @@ where, having, limit, offset).
|
|||
> sgroupBy :: P [GroupingExpr]
|
||||
> sgroupBy = try (keyword_ "group")
|
||||
> *> keyword_ "by"
|
||||
> *> commaSep1 (SimpleGroup <$> scalarExpr)
|
||||
> *> commaSep1 groupingExpression
|
||||
> where
|
||||
> groupingExpression =
|
||||
> choice
|
||||
> [try (keyword_ "cube") >>
|
||||
> Cube <$> parens (commaSep groupingExpression)
|
||||
> ,try (keyword_ "rollup") >>
|
||||
> Rollup <$> parens (commaSep groupingExpression)
|
||||
> ,GroupingParens <$> parens (commaSep groupingExpression)
|
||||
> ,try (keyword_ "grouping") >> keyword_ "sets" >>
|
||||
> GroupingSets <$> parens (commaSep groupingExpression)
|
||||
> ,SimpleGroup <$> scalarExpr
|
||||
> ]
|
||||
|
||||
> having :: P ScalarExpr
|
||||
> having = keywordScalarExpr "having"
|
||||
|
|
|
@ -38,9 +38,14 @@ sure which sql version they were introduced, 1999 or 2003 I think).
|
|||
|
||||
> newGroupBy :: TestItem
|
||||
> newGroupBy = Group "newGroupBy" $ map (uncurry TestQueryExpr)
|
||||
> [
|
||||
|
||||
group by ()
|
||||
> [("select * from t group by ()", ms [GroupingParens []])
|
||||
> ,("select * from t group by grouping sets ((), (a))"
|
||||
> ,ms [GroupingSets [GroupingParens []
|
||||
> ,GroupingParens [SimpleGroup $ Iden "a"]]])
|
||||
> ,("select * from t group by cube(a,b)"
|
||||
> ,ms [Cube [SimpleGroup $ Iden "a", SimpleGroup $ Iden "b"]])
|
||||
> ,("select * from t group by rollup(a,b)"
|
||||
> ,ms [Rollup [SimpleGroup $ Iden "a", SimpleGroup $ Iden "b"]])
|
||||
|
||||
|
||||
GROUP BY a
|
||||
|
@ -224,3 +229,7 @@ GROUP BY CUBE(MONTH(SALES_DATE),REGION)
|
|||
ORDER BY MONTH, REGION
|
||||
|
||||
> ]
|
||||
> where
|
||||
> ms g = makeSelect {qeSelectList = [(Nothing,Star)]
|
||||
> ,qeFrom = [TRSimple "t"]
|
||||
> ,qeGroupBy = g}
|
||||
|
|
Loading…
Reference in a new issue