我有包含Json的行,比如:[{"Qty": 1, "Amt": 2.99},{"Qty": 3, Amt": 4.50}]

如何获得每行的收件箱总数?

复制代码:

DROP TABLE IF EXISTS dbo.SqlQueryResults;
CREATE TABLE dbo.SqlQueryResults(
  Id INT,
  Result nvarchar(max)
)
GO

INSERT INTO dbo.SqlQueryResults (Id, Result) 
VALUES 
  (1, '[{"Qty":1, "Amt":2.99}, {"Qty":3, "Amt":4.50}]'), 
  (2, '[{"Qty":2, "Amt":7.99}, {"Qty":5, "Amt":2.50}]')

SELECT * FROM dbo.SqlQueryResults;

我被Json路径表达困住了. 文档JSON Path Expressions (SQL Server)仅显示名称"people": [{}.{}]代表ex的数组

这是我目前的疑问:

SELECT Id, SUM(CAST( JSON_VALUE(Result,N'lax $.[].Amt') as decimal)) 
FROM SqlQueryResults
GROUP BY Id

推荐答案

这里有一种方法:

SELECT 
    id,
    sum(cast(JSON_VALUE(value, '$.Amt') as numeric(10,2))) as sum_Amt
FROM dbo.SqlQueryResults 
CROSS APPLY OPENJSON(Result)
GROUP BY id 

输出:

id sum_Amt
1 7.49
2 10.49

Sql相关问答推荐

SUM(条件)在Oracle?

从2个表中查找每条记录的唯一最接近的日期匹配

在甲骨文中查找前一个星期一的S日期

如何优化我的功能以减少花费的时间?

计算周时出现SQL错误结果

如何查找所提供日期范围的所有季度开始日期和结束日期

为什么我的SQL标量函数有时会抛出";子查询返回多个值.这是不允许的.

如果多行科目有一行在指定的日期范围内,如何 Select 该科目在该日期之前的所有行?

按分类标准检索记录

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

将伪数据插入Postgres表

将时间范围划分为全天和前后剩余小时

AdventureWorks 查询

如何对 jsonb 中的字段执行求和,然后使用结果过滤查询的输出

PostgreSQL-用第一个非空填充以前的值

避免在SQL中使用具有相同条件的多个子查询

PostgreSQL - 递归地聚合来自不同列的属性

使用 PL/PGSQL 函数 Select 返回多条记录

Set vs let vs 在snowflake中声明变量

如何根据 ID 和指标从 2 个表中找到不同的值?