代码之家  ›  专栏  ›  技术社区  ›  qwazer

如何在一个查询中选择多个聚合值

  •  0
  • qwazer  · 技术社区  · 6 年前

    我试图在一个查询中从集合中选择最小时间戳和最大时间戳。

    所有变体,比如

     SELECT value min(c._ts), value max(c._ts) FROM c
     SELECT value min(c._ts), max(c._ts) FROM c
     SELECT values min(c._ts), max(c._ts) FROM c
    

    产生错误,例如

    : {"code":400,"body":"{\"code\":\"BadRequest\",\"message\":\"Message: {\\\"errors\\\":[{\\\"severity\\\":\\\"Error\\\",\\\"location\\\":{\\\"start\\\":23,\\\"end\\\":24},\\\"code\\\":\\\"SC1001\\\",\\\"message\\\":\\\"Syntax error, incorrect syntax near ','.\\\"}]}\\r\\nActivityId: ad845eae-8b97-4f24-b372-dd5ce8f4d2a6, Microsoft.Azure.Documents.Common/2.0.0.0\"}","activityId":"ad845eae-8b97-4f24-b372-dd5ce8f4d2a6"} 
    

    在天蓝色宇宙数据库中有这样的可能性吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Nick Chapsas    6 年前

    看着 documentation 关于value关键字,它看起来不像一个查询中可以有多个value关键字。

    如果select语句中有逗号,则会出现错误。

    听起来,UDF或SP更适合解决您的问题。

    记住这样的事情 select max(c._ts), min(c._ts) from c 将引发错误: Cross partition query only supports 'VALUE <AggreateFunc>' for aggregates .

    这表明,如果您指定分区,那么您将能够使其正常工作,但我只是尝试指定分区键,但它仍然失败,并出现相同的错误。